![](/img/trans.png)
[英]Redux-toolkit: state is a proxy inside a createSlice reducer
[英]How to use single action type in different reducer function with createSlice method in redux-toolkit
是否有可能多个reducer(使用createSlice 方法创建)必须响应相同的操作?
import { createSlice } from '@reduxjs/toolkit';
const isAuthenticated = createSlice({
name: 'isAuthenticated',
initialState: false,
reducers: {
loginSuccess(state, action) {
return true;
},
logout(state, action) {
return false;
},
},
});
export const { loginSuccess, logout } = isAuthenticated.actions;
export default isAuthenticated.reducer;
const currentUser = createSlice({
name: 'currenUser',
initialState: 'jhon',
reducers: {
loginSuccess(state, action) {
return 'steve';
},
logout() {
return state;
},
},
});
export const currentUserReducer = currentUser.reducer;
正如您所看到的,action.type loginSuccess位于两个不同的减速器中,因为我只导出 isAuthenticated 的loginSuccess我只能使用该操作进行调度。 我知道我也可以从 currentUser 导出loginSuccess ,但我只想调度一个动作并将 state 更改为两种不同的状态。
我知道这可以用香草 redux 和 redux 来完成,推荐在这里使用它
简而言之,我试图复制它,但使用 redux-tool-kit 中的 createSlice 方法。
提前感谢您的帮助。
您正在寻找extraReducers :
const isAuthenticated = createSlice({
name: 'isAuthenticated',
initialState: false,
reducers: {
loginSuccess(state, action) {
return true;
},
logout(state, action) {
return false;
},
},
});
export const { loginSuccess, logout } = isAuthenticated.actions;
export default isAuthenticated.reducer;
const currentUser = createSlice({
name: 'currenUser',
initialState: 'jhon',
reducers: {
logout() {
return state;
},
},
extraReducers: builder => {
builder.addCase(isAuthenticated.actions.loginSuccess, () => {
return 'steve'
})
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.