更换组件时,如何在减速机上重新定义初始状态

时间:2018-09-05 16:07:28

标签: javascript html reactjs redux redux-actions

更多详细信息:

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

当我单击此汉堡菜单时,将状态设置为true,菜单将变为打开状态;当我单击十字时,状态将变为false,并且菜单将关闭。

现在出现问题:

如果我更改组件始终保存以前的状态,例如,如果菜单处于打开状态并单击home,则该状态实际上位于true,而在我的家中,菜单处于打开状态,不想这样。

您有什么建议吗?

查看代码:

// 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);

1 个答案:

答案 0 :(得分:1)

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

在第一个组件上使用componentWillUnmount

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

在第二个组件上使用componentWillMount

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