我有react-redux app。
在我的应用程序中,我有很多用户可以选择项目的地方,例如 - 选择侧栏中的主菜单,选择项目主菜单,选择标签。
这些动作中的每一个(select_manu,select_item)都会导致多个减速器的响应。
我希望防止减速器在所选项目与当前项目相同时更改状态。
我的问题是:
正确的地方在哪里提出要求:
if (currentTab!= selectedTab)
第一个选项:
在动作创造者处,通过thunk。类似的东西:
export const selectTab = (selectedTab) => {
return {
type: Const.SELECT_TAB,
selectedTab
}
};
export const tabClick = (tab) => {
return function (dispatch, getState) {
const currentTab = getState().active.tab;
if (currentTab!= tab) {
dispatch(selectTab(tab))
}
}
};
第二个选项:
在容器上,例如:
const mergeProps = (stateProps, dispatchProps, ownProps) => {
return {
onTabSelection: (tab) => {
if (tab != stateProps.tab)
dispatch(selectTab(tab));
}