Я недавно начал использовать комплект редукционного стартера для уменьшения стандартного кода в моем проекте. Преимущество его использования в том, что оно позволяет напрямую изменять состояние.
Однако, если я попытаюсь сделать следующее, вещи не будут работать:
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;
Есть ли причина такого поведения?