Как переопределить начальное состояние моего редуктора, когда я меняю компонент - PullRequest
0 голосов
/ 05 сентября 2018

Подробнее:

У меня есть компонент с именем 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 голосов
/ 05 сентября 2018

Вы можете использовать методы componentWillUnmount или componentWillMount для компонентов

Использование componentWillUnmount на первом компоненте:

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

Использование componentWillMount для второго компонента:

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