0

更多细节 :

我有一个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);

4

1 回答 1

1

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

componentWillUnmount在第一个组件上使用:

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

componentWillMount在第二个组件上使用:

componentWillMount() {
  if (this.props.isMenuOpen) this.props.setBurgerMenu()
}
于 2018-09-05T17:21:03.403 回答