実際には、親から子に送信アクションメソッドを渡し、this.props.someMethodToDispatch()
のような子コンポーネントで呼び出すことができます。アクションをディスパッチする前に、親コンポーネントでそれを実行します。たとえば :
const dispatch = (action) => console.info("Action dispatched", action);
class Parent extends React.Component {
constructor(props) {
super(props);
this._handleChildClick = this._handleChildClick.bind(this);
}
_handleChildClick(action) {
// You can do something here
console.info("Child pass action", action);
// And after that dispatch action
dispatch(action);
}
render() {
return (
<div>
<h2>Simulate handle action from child</h2>
<Child handleClick={this._handleChildClick} />
</div>
);
}
}
class Child extends React.Component {
_generateAction() {
// This is action creator mock
return {type: "SOME_ACTION", payload: "someting"};
}
render() {
return (<button onClick={() => this.props.handleClick(this._generateAction())}>Click me</button>);
}
}
ReactDOM.render(<Parent />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
これはあなたが子コンポーネントがアクションをディスパッチするときに更新され、あなたの状態にプロパティを追加する場合があります場合のように聞こえます。あなたの親コンポーネントは、 'connect'を使ってこの状態の部分にサブスクライブすることができます。 – adrice727