2016-02-03 9 views
8

私はかなり反応して、いくつかのコンポーネントを動作させようとしています。私は他のコンポーネントの状態を更新するにはどうすればいいですか?

ObjectBの状態をObjectBから更新したいと考えています。どのようにしてObjectBのupdateMyStateメソッドをObjectBで呼び出すことができますか? ありがとう!

+0

@dvineマルチメディアのanwserが正しい、と反応するネイティブが反応に基づいているので、あなたがコンセプトの反応を見てみたいことがあります。https://facebook.github .io/react/tips/communications-between-components.html –

答えて

15

リアクションの基本的な考え方は、一方向のデータフローです。つまり、データは祖先コンポーネントから子のプロパティを介してその子へと下向きにのみ共有されます。この単純な例では、Fluxをアーキテクチャやイベントエミッタのように放置しておく必要はありません。

コンポーネントの状態を外部から変更する場合は、親のrenderメソッドで受け取る小道具を変更するだけです。 myStateは実際にObjectBに存在し、ObjectAにプロパティとして渡されます。あなたの例では、このようになりますこと:

ObjectA:React.createClass({ 
    propTypes: { 
     ... 

    }, 

    render: function() { 
     return (<div className="my-class">'hello' +{ this.props.name }</div>); 
     } 
}); 

ObjectB:React.createClass({ 
    propTypes: { 
     ... 

    }, 

    getInitialState: function() { 
     return { 
      name: null 
     } 
    }, 

    onNameChange: function(newName) { 
     this.setState({ name: newName }) 
    }, 

    render: function() { 
     return (
      <div className="my-class"> 
       <ObjectA name={ this.state.name } /> 
      </div> 
     ); 
    } 
}); 
+0

詳細な回答ありがとうございます。 –

関連する問題