我正在Redux网站上学习Redux教程,在第8部分中,当编写一个reducer来处理todo时,他们会执行以下操作:
const todosSlice = createSlice({
name: 'todos',
initialState,
reducers: {
//...
todoColorSelected: {
reducer(state, action) {
const { color, todoId } = action.payload
state.entities[todoId].color = color
},
prepare(todoId, color) {
return {
payload: { todoId, color }
}
}
},
//...
}
})
它们利用了prepare
函数;然而,我在不知道prepare
函数存在的情况下编写了该代码,如下所示(仅使用reducer
(,它也能正常工作。
const todosSlice = createSlice({
name: 'todos',
initialState,
reducers: {
//...
todoColorSelected: {
const { color, todoId } = action.payload
state.entities[todoId].color = color
},
//...
}
})
那么,为什么在这种情况下我们需要prepare
函数呢?还是仅仅是一个简单的例子,没有任何区别?
它是在reducer处理action.payload
之前运行代码的助手,您可以转换有效负载等。https://redux-toolkit.js.org/api/createAction#using-准备回调以自定义操作内容