Redix Toolkit的createSlice函数中的"prepare"参数有什么用途



我正在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-准备回调以自定义操作内容

最新更新