あなたは両方のコンポーネントのコンテナとして親コンポーネントを作ることができるなど、新しい値で再描画されます。したがって、すべての状態と関数は、親コンポーネントで処理され、他のコンポーネントに渡されます。
class Parent extends React.Component {
constructor() {
super();
this.state = {
controls: controls
}
}
onClick = (dataFromChild2) => {
//Resetting
this.setState({controls: dataFromChild2})
}
render() {
return (
<div>
<Child1 gridControl={this.state.controls}/>
<Child2 onClick={this.onClick}/>
</div>
)
}
}
あなたは子コンポーネント
UPDATEその
だと思い、このようにthis.props
からgridControl
とonClick
にアクセスすることができ、あなたが処理するために必要な状態と機能を持つ親コンポーネントを持っていますデータ。子コンポーネントはそれらのデータを受け取り、それに従って状態を更新します。
のは、親コンポーネントは、このようなものであるとしましょう:あなたはCHILD1のための状態を使用している、としたくない場合は
class Child2 extends React.Component {
constructor() {
super();
}
onClick =() => {
var data = {};
this.props.onClick(data);
};
render() {
return (
<div>
<button onClick={this.onClick}/>
</div>
);
}
:
class Parent extends React.Component {
constructor() {
super();
this.state = {
gridControl: {}
}
}
onChild2ButtonClick = (dataFromChild2) => {
this.setState({
gridControl: dataFromChild2
});
};
render() {
return (
<div>
<Child1 controls={this.state.gridControl}/>
<Child2 onClick={this.onChild2ButtonClick}/>
</div>
);
}
}
CHILD2コンポーネントは次のようなものですそれを処理するために親コンポーネント内の関数を使って小道具に変更し、親コンポーネントから受け取った新しい小道具でcomponentWillReceiveProps
メソッドの状態を更新し、送信された小道具がChild1コンポーネントで使用される状態と一致するようにします。
希望するものはクリアされます。
グリッドレイアウトの状態は、チャイルド1内で完全に制御されています。親からのプロップとしてどのように渡すことができないのですか?そこには多くの機能があります。あなたの例からデータフローが得られるかどうかはまだ分かりません。子供2は州を後押ししますか?あなたはそれをしなければなりませんか? – cbll
そして、 "datafromchild2"をそのような親コンポーネントの関数にどのように渡しますか? Child2コンポーネントの – cbll
は、onClickを呼び出すと、そのデータを送信できます。それはこの 'this.props.onClick(data)'のようなものになります。 店舗システムを使用していないためです。私はこれがトリックをするだろうと思う。 'componentWillReceiveProps'ライフサイクルメソッドを使ってChild1コンポーネントの状態を更新することができます。 –