当我更改组件时,如何重新定义我的减速器的初始状态
How can redefine initial state on my reducer, when I change the component
更多详情:
我有一个名为 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);
您可以在组件上使用 componentWillUnmount
或 componentWillMount
方法
在第一个组件上使用 componentWillUnmount
:
componentWillUnmount() {
if (this.props.isMenuOpen) this.props.setBurgerMenu()
}
在第二个组件上使用 componentWillMount
:
componentWillMount() {
if (this.props.isMenuOpen) this.props.setBurgerMenu()
}
更多详情:
我有一个名为 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);
您可以在组件上使用 componentWillUnmount
或 componentWillMount
方法
在第一个组件上使用 componentWillUnmount
:
componentWillUnmount() {
if (this.props.isMenuOpen) this.props.setBurgerMenu()
}
在第二个组件上使用 componentWillMount
:
componentWillMount() {
if (this.props.isMenuOpen) this.props.setBurgerMenu()
}