Вместо
state.token = action.payload.token
используйте
const token = action.payload.token
state.token = token
Постоянные являются неизменяемыми, и назначение содержимого action.payload константе решило проблему для меня (обратите внимание, что в случае, если полезная нагрузка объект не нужен
Рабочий пример createSlice:
import { createSlice } from '@reduxjs/toolkit';
export const slice = createSlice({
name: 'login',
initialState: {
username: "Foo",
password: "AAA",
authorized : false
},
reducers: {
setUsername: (state, action) => {
const value = action.payload
state.username = value // action.payload.username
},
setPassword: (state, action) => {
const value = action.payload
state.password = value // action.payload.password
},
logon: (state, action) => {
state.username = action.payload.username
state.password = action.payload.password
state.authorized = true
},
logoff: state => state.authorized = false
},
});