【发布时间】:2021-01-24 23:18:11
【问题描述】:
我有一个authSlice
const authSlice = createSlice({
name: 'authStore',
initialState,
reducers: {
logout(state = initialState) {
return { ...state, isAuthenticated: false };
},
},
extraReducers: (builder) => {
builder.addCase(login.fulfilled, (state, { payload }) => {
state.isAuthenticated = true;
localStorage.setItem('userId', payload.userId);
});
builder.addCase(login.pending, (state) => {
state.isLoading = true;
});
builder.addCase(login.rejected, (state, { payload, error }) => {
if (payload) {
state.loginError = payload;
state.isLoading = false;
} else {
state.loginError = error;
}
});
},
});
还有一个userSlice:
const userSlice = createSlice({
name: 'userStore',
initialState,
reducers: {
clearUser(state = initialState) {
return { ...state };
},
},
extraReducers: (builder) => {
builder.addCase(getUser.fulfilled, (state, { payload }) => {
state.user = payload;
state.isLoading = false;
});
builder.addCase(getUser.pending, (state) => {
state.isLoading = true;
});
builder.addCase(getUser.rejected, (state) => {
state.isLoading = false;
});
},
});
我对我的代码有几个问题:
- 我如何从
authSlice拨打userSlice中的clearUser()? - 这是一种好的做法还是一种反模式?
- 如果它是一种反模式,那么在保持
authSlice和userSlice分离的同时,还有什么替代方法可以做到这一点?
【问题讨论】:
标签: reactjs typescript redux redux-toolkit