重新计算初始状态
Recalculate initial state
有没有办法重新计算切片的初始状态。我正在尝试重置整个商店:
const rootReducer = (state: any, action: any) => {
// Clear the state
if (action.type === clearState.type) {
// Clear all cached api requests
apiSlice.util.resetApiState();
// Return initial state
state = undefined;
}
return combinedReducer(state, action);
};
问题是我的身份验证切片具有以下初始状态:
export const initialState = {
isLoggedIn: checkIfUserIsAlreadyLoggedIn(),
email: "",
status: "idle",
errorMessage: "",
};
因此,当我启动我的应用程序并且 checkIfUserIsAlreadyLoggedIn
returns 为真时,当我重置商店时,isLoggedIn
仍然为真。
有什么方法可以重新计算 checkIfUserIsAlreadyLoggedIn
函数,从而重新计算初始身份验证切片状态?
谢谢!
没有。这将是 reducer 中的副作用,这在 Redux 中是被严格禁止的。 reducer 应该只依赖于状态和动作,而不是外部数据源。
此外,apiSlice.util.resetApiState()
除非您发送它,否则不会执行任何操作。
也许把它全部写成一个 thunk:
const resetAll = dispatch => {
dispatch(resetAction())
dispatch(apiSlice.util.resetApiState())
dispatch(setLoginState(checkIfUserIsAlreadyLoggedIn()))
}
有没有办法重新计算切片的初始状态。我正在尝试重置整个商店:
const rootReducer = (state: any, action: any) => {
// Clear the state
if (action.type === clearState.type) {
// Clear all cached api requests
apiSlice.util.resetApiState();
// Return initial state
state = undefined;
}
return combinedReducer(state, action);
};
问题是我的身份验证切片具有以下初始状态:
export const initialState = {
isLoggedIn: checkIfUserIsAlreadyLoggedIn(),
email: "",
status: "idle",
errorMessage: "",
};
因此,当我启动我的应用程序并且 checkIfUserIsAlreadyLoggedIn
returns 为真时,当我重置商店时,isLoggedIn
仍然为真。
有什么方法可以重新计算 checkIfUserIsAlreadyLoggedIn
函数,从而重新计算初始身份验证切片状态?
谢谢!
没有。这将是 reducer 中的副作用,这在 Redux 中是被严格禁止的。 reducer 应该只依赖于状态和动作,而不是外部数据源。
此外,apiSlice.util.resetApiState()
除非您发送它,否则不会执行任何操作。
也许把它全部写成一个 thunk:
const resetAll = dispatch => {
dispatch(resetAction())
dispatch(apiSlice.util.resetApiState())
dispatch(setLoginState(checkIfUserIsAlreadyLoggedIn()))
}