2017-02-14 16 views
1

私はReactを使い始めました。コンポーネント間でプロパティを共有することについての質問があります。たとえば、他の子コンポーネントに渡すことができる「可視」機能を持つ親コンポーネントが必要です。Reactコンポーネントとプロパティを共有するには?

例:

CustomInput visible="true"; 
CustomDropDown visible="false" 

私は良い習慣を尊重し、これを行うための最善の方法を知りたいのです。ご協力ありがとうございました!

+0

私はあなたが何を意味するのかよく分かりません。子コンポーネントに「値」または「関数」を渡したいと思いますか?それが関数なら、それをそのまま渡すだけです。 Jayce444

+0

ChildComponentは私が望むものでした。助けてくれてありがとう! –

答えて

1

リアルシンプル。メソッドを小道具として渡すことができます。あなたが親を持っていると仮定し、またはより高次の成分(HOC)は、あなたがこのような何かを行うことができます:

class Parent extends React.Component { 
    logWord = (word) => { 
    console.log(word); 
    } 

    render() { 
    return <ChildComponent handleLogging={ this.logWord } /> 
    } 
} 

その後、ChildComponentに、あなたは、単に小道具からメソッドにアクセスします。

class ChildComponent extends React.Component { 
    render() { 
    return (
     <div onClick={ this.props.handleLog.bind(null, 'Logged!') }>Click me to log a word!</div> 
    } 
    } 
} 

あなたの状態の可視属性を更新し、親に存在していた方法を望んでいたのであれば、あなたの例では、あなたが書くことができる:例えば

class Parent extends React.Component { 
    constructor() { 
     this.state = { 
      visible: false 
     } 
    } 

    setVisible = (bool) => { 
     this.setState({ visible: bool }); 
    } 

    render() { 
     return <ChildComponent updateVisible={ this.setVisible } visible={ this.state.visible } />; 
    } 
} 

ChildComponent:

class ChildComponent extends React.Component { 
    render() { 
    return (
     <div> 
     <div onClick={ this.props.updateVisible.bind(null, true) }>Set me to visible!</div> 
     <div onClick={ this.props.updateVisible.bind(null, false) }>Set me to invisible!</div> 
      { this.props.visible && <div>I'm visible right now!</div> } 
     </div> 
    } 
    } 
} 
+0

多くのありがとうございました。これは私を助けました。 –

+0

問題ありません。 Reactの素晴らしい世界へようこそ! – monners

関連する問題