当我更改组件时,如何在我的reducer上重新定义初始状态

问题描述 投票:0回答:1

更多细节 :

我有一个名为header的组件,我有一个菜单,当我在移动设备中时,我有一个汉堡菜单。

当我点击这个汉堡菜单时,我在true设置状态,菜单变为打开,当我点击十字架时,状态变为false,菜单关闭。

现在的问题是:

如果我改变组件是保存总是以前的状态,如果菜单打开并点击home例如,状态它实际上在true和我家的菜单打开,我不想要这个comportement。

你有什么建议吗?

看代码:

// ACTION : 

export const setBurgerMenu = createAction(
  SET_BURGER_MENU,
  () => ({})
);

export const getBurgerMenu = () => {
  return dispatch => {
    dispatch(setBurgerMenu());
  };
};

// REDUCER : 
// Initial state contain isOpenMenu at false
const reducer = handleActions({
  [SET_BURGER_MENU]: (state) => {
    return {
      ...state,
      isOpenMenu: !state.isOpenMenu
    };
  },
  [BREADCRUMBS_WILL_UPDATE]: (state) => {
    return {
      ...state,
      isWillUpdate: true
    };
  },
  [BREADCRUMBS_UPDATED]: (state) => {
    return {
      ...state,
      isWillUpdate: false
    };
  },
  [CLEAR_USER_DATA]: () => {
    return {
      ...initialState
    };
  }
}, initialState);
javascript html reactjs redux redux-actions
1个回答
1
投票

您可以在组件上使用componentWillUnmountcomponentWillMount方法

在第一个组件上使用componentWillUnmount

componentWillUnmount() {
  if (this.props.isMenuOpen) this.props.setBurgerMenu()
}

在第二个组件上使用componentWillMount

componentWillMount() {
  if (this.props.isMenuOpen) this.props.setBurgerMenu()
}
© www.soinside.com 2019 - 2024. All rights reserved.