私はreduxを使ってコンテナコンポーネントを書いており、実装はmapDispatchToProps
次のようになります。
const mapDispatchToProps = (dispatch, ownProps) => {
return {
onChange: (newValue) => {
dispatch(updateAttributeSelection('genre', newValue));
dispatch(getTableData(newValue, ownProps.currentYear));
}
}
}
問題は、getTableData を取得するには、他のコンポーネントの状態が必要であることです。このメソッドで状態オブジェクトにアクセスするにはどうすればよいでしょうか?
ベストアンサー1
getState
redux-thunk を使用すると、 内で関数を定義するのではなく、にアクセスできる別のアクション作成関数を作成できますmapDispatchToProps
。
function doTableActions(newValue, currentYear) {
return (dispatch, getState) => {
dispatch(updateAttributeSelection('genre', newValue));
let state = getState();
// do some logic based on state, and then:
dispatch(getTableData(newValue, currentYear));
}
}
let mapDispatchToProps = (dispatch, ownProps) => {
return {
onChange : (newValue) => {
dispatch(doTableActions(newValue, ownProps.currentYear))
}
}
}
これらを整理する方法はいくつかありますが、このような方法ならうまくいくはずです。