Redux: Не меняется state при использовании reducer'a
Всем привет, только учусь и столкнулся со следующей проблемой:
Есть один редьюсер, который хранит данные, и есть второй, который эти данные использует. При использовании обычного redux, все работает отлично, но как только код был переписан на redux toolkit, начинает вылетать ошибка Uncaught TypeError: Cannot assign to read only property 'someValue' of object '#< Object>' поля стейта первого редьюсера стали: "value": "", "writable": false, "enumerable": true, "configurable": false И из-за этого второй редьюсер уже не пожет использовать данные с первого (он просто добавляет новое поле к объекту)
Пример первый редьюсер на redux:
export const getDataReducer = (state = initialState, action) => {
switch (action.type) {
case GET_DATA_FROM_TITLE: {
return { ...state, title: action.title };
}
case GET_DATA_FROM_TEXT: {
return { ...state, text: action.text };
}
case GET_DATA_FROM_TIME: {
return { ...state, time: action.time };
}
default: {
return state;
}
}
};
Вот первый редьюсер на redux toolkit:
export const getDatatSlice = createSlice({
name: "@@data",
initialState: initialState,
reducers: {
getDataFromTitle: {
reducer: (state, action) => {
state.title = action.payload;
},
},
getDataFromText: {
reducer: (state, action) => {
state.text = action.payload;
},
},
getDataFromTime: {
reducer: (state, action) => {
state.time = action.payload;
},
},
},
});
Второй редьюсер, принимает массив из объектов, созданных на основе данных с первого редьюсера:
export const eventsSlice = createSlice({
name: "@@main",
initialState: initialState,
reducers: {
addEvent: {
reducer: (state, action) => {
state.events.push(...action.payload);
},
prepare: (event) => {
event[0].someValue = `someValue` // тут вылетает ошибка
return {payload: [...event]}
},
},
addExceptions: (state, action) => {
state.exceptions.push(...action.payload);
},
},
});