サーバーからユーザーデータを取得する非同期要求を発生させるmapStateToProps
関数があります。成功した結果は、ユーザーを実際に状態に設定する別のアクションを発生させます。これらはすべて正常に動作します。私が今必要とするのは、ユーザーデータが状態に設定された後、fetchUser
から設定されたユーザー値を使用して別のアクション(setEditUserModel
)を起動する必要があるということです。stateProps値null in mergeProps
mapStateToProps
でstate
にアクセスできないため、mergeProps
接続オプションを追加しました。 mapStateToProps
とmapDispatchToProps
を組み合わせて(マージする)ことは私の理解です。下のコードでこれを行うと、mergeProps
のstateProps.user
は、私のAppStateを検査するときの実際の値がnullではなくても、nullです。
function mapStateToProps(state: AppState): EditUserStateProps {
return {
user: state.user.data
};
}
function mapDispatchToProps(dispatch: Dispatch<ActionTypes>): EditUserDispatchProps {
return {
fetchUser: (id: number) => {
return fetchUser(id)(dispatch);
},
setEditUserModel: (user: User) => {
dispatch(actionCreators.setEditUserModel(user));
}
}
};
function mergeProps(stateProps: EditUserStateProps, dispatchProps: EditUserDispatchProps, ownProps: EditUserContainerProps) {
return {
...ownProps,
...stateProps,
...dispatchProps,
fetchUser: (id: number) => {
return dispatchProps.fetchUser(id).then(() => {
dispatchProps.setEditUserModel(stateProps.user);
});
}
}
}
なぜstateProps.user
の値がnullですか?