Material-ui: ๋ฐ˜์‘ ๋ผ์šฐํ„ฐ์—์„œ ๋งํฌ๋กœ ๋ž˜ํ•‘๋œ ๋ฒ„ํŠผ์ด Safari์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2015๋…„ 06์›” 15์ผ  ยท  36์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mui-org/material-ui

๋ฐ˜์‘ ๋ผ์šฐํ„ฐ ์‚ฌ์šฉ ... ์œ ํ˜• ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SPA ์œ ํ˜• ํƒ์ƒ‰ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ข…๋ฅ˜์˜ material-ui ๋ฒ„ํŠผ์„ Link๋กœ ๋ž˜ํ•‘ํ•˜๋ฉด Chrome์—์„œ๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ Safari์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Safari์—์„œ๋Š” ํƒ์ƒ‰ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋ฒ„ํŠผ ์ž์ฒด์— ๋ช…์‹œ์ ์ธ onTouchTap ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ์ด๊ฒƒ์ด ์ผ์ข…์˜ ๋ฒ„๊ทธ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@mariusk ๋‹น์‹ ์€ ์ง€๊ธˆ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

<FlatButton
  containerElement={<Link to="/login" />}
  linkButton={true}
  label={l.l('no', 'Sign in')}/>

๋ชจ๋“  36 ๋Œ“๊ธ€

@mariusk ๋ฐ˜์‘ ๋ผ์šฐํ„ฐ์—์„œ Button ๊ตฌ์„ฑ ์š”์†Œ๋กœ Link ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ถ”๊ฐ€ํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

let editLink = <Link to="editTopic"/>;
<IconButton
    linkButton={true}
    onTouchTap={editLink}
    tooltip="Edit forum">
    <i className="material-icons">edit</i>
</IconButton>

linkButton={true} ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด href ์š”์†Œ์— ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜์ง€๋งŒ ๋ฐ˜์‘ ๋ผ์šฐํ„ฐ ๋งํฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์•ต์ปค ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 <Link to="/login"><FlatButton onTouchTap={this.clickHandler}>{l.l('no', 'Sign in')}</FlatButton></Link>

onTouchTap ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์—†์œผ๋ฉด Chrome์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ Safari์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ช…์‹œ์  ํ•ธ๋“ค๋Ÿฌ(์ด๋Š” ๋‹ค์‹œ react-router์˜ transitionTo(...) ํ˜ธ์ถœํ•จ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌํŒŒ๋ฆฌ์—์„œ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

FlatButton์ด <button /> ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  <a /> <Link /> ๊ฐ€ <a /> ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

<a><button /></a>

๋‚ด๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐ€์ง€ ํ•ด๊ฒฐ์ฑ…์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ์š”์†Œ๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์š”์†Œ ์†Œํ’ˆ์„ ํ—ˆ์šฉํ•˜๋„๋ก ํ™•์žฅ ๋ฒ„ํŠผ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<FlatButton containerElement={<Link to="/login"/>} />

๋„ค๊ฐ€ ์˜ณ์•„; ์š”์†Œ ๋‚ด๋ถ€์˜ ๋ฒ„ํŠผ์€ ์œ ํšจํ•œ html5๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ…์€ a ์š”์†Œ( button ์ถ”๊ฐ€)์— ๋ฒ„ํŠผ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๋‹ค์Œ className ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ #846์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<FlatButton>
  <Link to="/login/" />
</FlatButton>

๋ฐฉ๊ธˆ #846์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šคํƒ€์ผ์ด ๊นจ์ง€๊ณ (๋ฒ„ํŠผ ํ…์ŠคํŠธ๋Š” ํฐ์ƒ‰ ๋ฐ”ํƒ•์— ํฐ์ƒ‰) ๋งํฌ๊ฐ€ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ž‘๋™ํ•˜์ง€ ์•Š์Œ). ํ…Œ์ŠคํŠธํ•œ ์‹ค์ œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<FlatButton><Link to="/login">{l.l('no', 'Sign in')}</Link></FlatButton>

์ƒ‰์ƒ ๋ฌธ์ œ(๋‚ด ์Šคํƒ€์ผ๋กœ ์ธํ•ด ๋ฐœ์ƒ) ๋ฐ ๋งํฌ๊ฐ€ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค ์™ธ์—๋„ ํฌ์ปค์Šค ๋ฌธ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌํ•จ๋œ a ๋งํฌ ์œ„๋กœ ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด ์ „์ฒด ๋ฒ„ํŠผ์ด ์•„๋‹Œ ๋งํฌ ๋ถ€๋ถ„๋งŒ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

@mariusk ๋‹น์‹ ์€ ์ง€๊ธˆ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

<FlatButton
  containerElement={<Link to="/login" />}
  linkButton={true}
  label={l.l('no', 'Sign in')}/>

๊ทธ๊ฒƒ์€ ์™„๋ฒฝํ•˜๊ฒŒ ๋ณด์ด๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ›Œ๋ฅญํ•œ ์ž‘ํ’ˆ์ž…๋‹ˆ๋‹ค!

์ด ์˜ต์…˜์œผ๋กœ ์ „ํ™˜ํ•˜๋ฉด EventEmitter ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. <Link> ์˜ ํด๋ฆญ ํ•ธ๋“ค๋Ÿฌ์ธ์ง€ ์•„๋‹ˆ๋ฉด <EnhancedButton> ์˜ ํด๋ฆญ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ œ๊ฑฐ๋˜์ง€ ์•Š๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ <Link> ๊ฐ€ ์ œ๋Œ€๋กœ ๋งˆ์šดํŠธ ํ•ด์ œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?

์ด์ œ linkButton={true} ์—†์ด๋„ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์ฃ ? ๋ฒ„ํŠผ์— Link ๋Œ€ํ•œ containerElement ์žˆ์œผ๋ฉด <button> ์•„๋‹Œ <a> ์š”์†Œ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค.

@hai-cea ์ข‹์•„์š”, thx!
@antoinerousseau ์˜ˆ, <a> ๋กœ ์ „ํ™˜ํ•˜๊ณ  ํ•œ ์Šคํƒ€์ผ์„ ๊นจ๊ณ  ... ์›๋ž˜ text-align: center ์„ค์ •๋œ ํ…์ŠคํŠธ๊ฐ€ ์™ผ์ชฝ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ <a> ์š”์†Œ์ž…๋‹ˆ๋‹ค.

containerElement๊ฐ€ ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค :(

์ด ์„ค์ •(์˜ˆ: RaisedButton width containerElement={<Link to="/register>} ์— CSS ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Ripple ํšจ๊ณผ๊ฐ€ ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์‹คํ–‰๋˜์ง€๋งŒ ์ง€์—ฐ์ด ๋„ˆ๋ฌด ์ปค์„œ ๊ฑฐ์˜ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋ฒ„ํŠผ์„ ๊ธธ๊ฒŒ ํƒญํ•˜์„ธ์š”.) ์ €๋Š” v0.15.4๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํžŒํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

๊ฒฝ๊ณ : ํƒœ๊ทธ ์— ์•Œ ์ˆ˜ ์—†๋Š” linkButton ์†Œํ’ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

link button error - google chrome 2017-01-28 21 05 23

@wzup ๊ทธ๋ƒฅ linkButton={true}

@wzup linkButton ์†Œํ’ˆ ์—†์ด ์ด์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

<FlatButton
  containerElement={<Link to="/login" />}
/>

@ํ•˜์ด-์„ธ์•„ ,
์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ,




๋ฒ„ํŠผ ํด๋ฆญ ํ›„ ํƒ์ƒ‰ํ•˜๋ฉด ์œ„์˜ ์ฝ”๋“œ์—์„œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ [๋ชจ๋‹ฌ ๊ธฐ๋Šฅ์„ ๋งํ•จ]์— ํŒ์—… ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฒ”ํ”„๋ฅผ ์šฉ์„œํ•˜์ง€๋งŒ ๋‹ค์Œ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹0.17์—์„œ ๊ฒฝ๊ณ ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

<RaisedButton
      label="Sign In"
      containerElement={<Link to="/login" />}
/>

๋‹ค์Œ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ : ํƒœ๊ทธ ์— ์•Œ ์ˆ˜ ์—†๋Š” onTouchTap ์†Œํ’ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://fb.me/react-unknown-prop๋ฅผ ์ฐธ์กฐ ํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ €์—๊ฒŒ ๋งž๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

import React from 'react';
import {Component, PropTypes} from 'react';
import FlatButton from 'material-ui/FlatButton';

export default class FlatLinkButton extends Component {

    static propTypes = {
        ...FlatButton.propTypes,
        to: PropTypes.string.isRequired,
        link: PropTypes.func.isRequired,
        label: PropTypes.node.isRequired,
    };

    render() {
        const style = Object.assign({
            color: 'white',
            marginTop: '7px'
        }, this.props.style);

        const props = {
            ...this.props,
            style,
        };

        delete props.to;
        delete props.link;

        const Link = this.props.link;

        return (
            <Link to={this.props.to}>
                <FlatButton {...props}/>
            </Link>
        );
    }
}

์šฉ๋ฒ•:

import {Link} from 'react-router';
import FlatLinkButton from './FlatLinkButton';

<FlatLinkButton to="/login" link={Link} label="Login"/>

@MatthewEdge #4670์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Material UI v1.0.0-alpha20 ์—์„œ๋Š” ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
<Button color="contrast" containerElement={<Link to="/login" />} linkButton={true} > Login </Button>

์•ˆ๋…•ํ•˜์„ธ์š”,

๋™์ผํ•œ ๋ฌธ์ œ, ํ”„๋กœํ† ํƒ€์ดํ•‘์— v1.0.0-alpha21์„ ์‚ฌ์šฉํ•˜๊ณ  containerElement ์„ ์•Œ ์ˆ˜ ์—†๋‹ค๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์†์„ฑ์ด ์‚ญ์ œ ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ณ ์ด ์†”๋ฃจ์…˜์œผ๋กœ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.

<Button raised dense color="primary" onClick={() => this.props.history.push('/project/4711')}>
  <i className="fa fa-search fa-on-button" aria-hidden="true" />Search
</Button>

@HerrVoennchen ์ด ์ตœ์‹  ๋ฒ„์ „ v1.0.0-beta.3 ํ•˜๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const LinkWrapper = ({ ...props }) => (
  <Link {...props} />
)

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ž˜ํผ๋ฅผ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

<Button to={`/project/${id}`} component={LinkWrapper}>Go</Button>

ํฌ์ธํ„ฐ @HiroAgustin์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ v1.0.0-beta.3 ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<Button
  color="primary"
  to={`/projects/${project.id}`}
  component={props => <Link {...props}/>}
>View</Button>

@HiroAgustin ๋ฐ @hubgit ์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” 1.0.0-beta.6 ์—์„œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ : Material-UI: ๊ตฌ์„ฑ ์š”์†Œ ์†์„ฑ์— ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.
ํ‚ค๋ณด๋“œ ํฌ์ปค์Šค ๋กœ์ง์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋ ค๋ฉด ์ฐธ์กฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์ œ์•ˆ?

@mh ์ค‘๊ด„ํ˜ธ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

<Button component={Link} to="/customers"> Customers </Button>

@limakayo ๊ทธ๋Ÿฐ๋ฐ ๋งํฌ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?

@mh ์ข‹์€ ์งˆ๋ฌธ, ์ง€๊ธˆ ์ค‘๊ด„ํ˜ธ๋กœ ํ…Œ์ŠคํŠธํ–ˆ๋Š”๋ฐ ์ž‘๋™ํ–ˆ๋Š”๋ฐ ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋‚˜ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.AppBar ์ œ๋ชฉ์— 'Travel Agency' ์ œ๋ชฉ์— ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

<AppBar title={"Travel Agency"} iconElementRight={ <div> <Link to="/customers" className="navbar"><FlatButton label="Customers" /></Link> <Link to="/tours" className="navbar"><FlatButton label="Tours" /></Link> </div> } />

์šฐ๋ฆฌ๋Š” v1-beta์—์„œ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<Button
  component={({...props}) => <Link to='/path' {...props} />}
>Path</Button>

๋‚˜๋Š” material-ui๊ฐ€ ์—ฌ์ „ํžˆ ์˜ค๋ž˜๋œ ์Šคํƒ€์ผ์˜ ui ํ”„๋ ˆ์ž„์›Œํฌ์— ์†ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ฐพ์€ ๋ชจ๋“  ๋ฒ„ํŠผ ์Šคํƒ€์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋‹จ์ˆœํ•œ ์Šคํƒ€์ผ์ด ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์ €์™€ ๊ฐ™์€ ๋‚ฎ์€ ์ˆ˜์ค€์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋งˆ์นจ๋‚ด ์ €๋Š” ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. '์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ'๋Š” CSS, saas ๋“ฑ์— ๋Œ€ํ•ด ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ˆœ์ˆ˜ํ•œ ๊ตฌ์„ฑ ์š”์†Œ์— ๋ฐ˜์‘ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ณ€๊ฒฝ ๋ฐฉ๋ฒ• ๋˜๋Š” ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๋ ค๊ณ  ๋งŽ์€ ์‹œ๊ฐ„, ์ผ, ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ–ฅํ›„ ์ถœ์‹œ ..

@palaniichukdmytro ๋Š” ์†”๋ฃจ์…˜์— ๊ฐ์‚ฌํ•˜์ง€๋งŒ BottomNavigationAction์˜ ๋ฆฌํ”Œ ์Šคํƒ€์ผ์„ ๊นจ๋œจ๋ฆฝ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ material-ui ๋ฒ„ํŠผ์—์„œ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
```
'react'์—์„œ React ๊ฐ€์ ธ์˜ค๊ธฐ
'@material-ui/core/Button'์—์„œ ๋ฒ„ํŠผ ๊ฐ€์ ธ์˜ค๊ธฐ
'react-router-dom'์—์„œ { ๋งํฌ } ๊ฐ€์ ธ์˜ค๊ธฐ

const ์ œ์ถœ ๋ฒ„ํŠผ = () =>

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Link๋กœ ๋ฒ„ํŠผ์„ ๋ Œ๋”๋งํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋ทฐ์— ์•„๋ฌด ๊ฒƒ๋„ ๋ Œ๋”๋ง๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

<Button
  component={() => (
    <Link
      to={{
        pathname: 'hello-there',
        state: {
          hello: 'HELLO THERE!',
        },
      }}
    />
  )}
  size="small"
  variant="contained"
  color="primary"
  fullWidth={true}
>
  HELLO BUTTON
</Button>

material-ui๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ ๊ฒฝ๋กœ๋กœ ์†Œํ’ˆ์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ฐ™์€ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰