我尝试了所有类似spread运算符的方法,但都不起作用。
这是我的减速器
//state is an array of objects.
const initialState = [
{taskName: "kkkkk", isEdit: false},
]
export const todoReducer = (state=initialState, action) =>{
switch(action.type){
case 'add' :
const temp=
{
taskName: action.payload.taskName,
isEdit: action.payload.isEdit
}
state.push(temp);
return {state}
default: return state
}
}
错误消息表明您正在使用Redux Toolkit,这非常好。问题是,您没有使用createSlice
或createReducer
,除此之外,在Redux中,您永远不允许使用=
向旧状态属性分配内容,也不允许调用类似.push
的内容,因为它会修改现有状态。
改为使用createSlice
:
const initialState = [
{taskName: "kkkkk", isEdit: false},
]
const slice = createSlice({
name: 'todos',
reducers: {
add(state, action) {
state.push(action.payload)
}
}
})
export const todoReducer = slice.reducer;
// this exports the auto-generated `add` action creator.
export const { add } = slice.actions;
由于您目前正在学习的教程似乎包含了现代和完全过时的实践,我强烈建议您阅读官方的Redux教程,它展示了现代概念。