我最近开始使用redux-starter-kit来减少项目中的样板代码。使用它的一个整洁的优点是,它使您可以直接更改状态。
但是,如果我尝试执行以下操作,则将无法正常工作:
const initialState = {
userId: '',
isLoading: false,
error: null,
};
const userSlice = createSlice({
slice: 'user',
initialState,
reducers: {
loginRequest: state => {
state.isLoading = true;
},
loginSuccess: (state, action) => {
state = { ...action.data.login, isLoading: false };
},
loginFailure: (state, action) => {
state.isLoading = false;
state.error = action.error;
},
},
});
同时执行以下操作之一可以正常工作:
Object.assign(state, { ...action.data.login, isLoading: false });
state.userId = action.data.login.userId; state.isLoading = false;
此行为背后的原因是什么?