我正在尝试同时注销和清除商店,所以点击我发送这个:
dispatch({type: PURGE, key: 'root', result: () => { } });
Redux persist 捕获它,并报告清除存储。伟大的。在另一个减速器中,我捕获了该调度,并像这样删除了我的访问令牌:
import { PURGE } from 'redux-persist/es/constants';
const authSlice = createSlice({
name: 'auth',
initialState,
reducers: {
setAccessToken(state: AuthState, action: PayloadAction<Auth>): void {
state.accessToken = action.payload.accessToken;
state.expiresIn = action.payload.expiresIn;
},
},
extraReducers: {
[PURGE]: (state: AuthState, action: string): void => {
state.accessToken = initialState.accessToken;
state.expiresIn = initialState.expiresIn;
},
},
});
PURGE 减速器实际上被调用,并修改了状态,但仍然没有重新渲染发生。所以 redux 不能接受它。但是根据文档,Redux 工具包使用 Proxy 对象作为状态并进行比较以查看它是否被修改。
我尝试过的事情:
state = initialState;
和
state = { ...initialState };
没用。存储工作并保存数据,其他操作工作。我该如何进行?
编辑:进一步调试显示我自己的 reducer 在 redux-persist reducer 之前被调用,redux-logger 报告我的 reducer 根本没有改变状态。