Javascript 如何在createSlice reducer prepare函数中创建实体ID
我在redux工具包的Javascript 如何在createSlice reducer prepare函数中创建实体ID,javascript,redux,immutability,redux-toolkit,Javascript,Redux,Immutability,Redux Toolkit,我在redux工具包的createSlice函数中包含的prepare回调函数中遇到了一些问题 我正在尝试使用prepare回调将唯一ID添加到我的操作有效负载中 报告说: 如果需要通过prepare回调自定义action creator有效负载值的创建,则reducers参数对象的相应字段的值应为对象而不是函数。此对象必须包含两个属性:reducer和prepare。reducer字段的值应该是case reducer函数,而prepare字段的值应该是prepare回调函数 下面是我正在使用
createSlice
函数中包含的prepare
回调函数中遇到了一些问题
我正在尝试使用prepare
回调将唯一ID添加到我的操作有效负载中
报告说:
如果需要通过prepare回调自定义action creator有效负载值的创建,则reducers参数对象的相应字段的值应为对象而不是函数。此对象必须包含两个属性:reducer和prepare。reducer字段的值应该是case reducer函数,而prepare字段的值应该是prepare回调函数
下面是我正在使用的代码(用TypeScript编写):
结果状态:
myEntity: {
ids: {
0:"test"
},
entities: {
"test": {
myPayloadTrait: 100
id: "test"
}
}
}
为什么在有效负载传递到减速器之前,我的prepare回调不覆盖“test”
id?任何帮助或指导都将不胜感激。prepare回调必须返回一个类似于{payload?,meta?,error?}
的对象。您的代码当前正在直接返回预期的有效负载
将其更改为:
addEntity:{
减速器:myEntityAdapter.addOne,
准备:(有效载荷)=>({
有效载荷:{
…有效载荷,
id:uuidv4()
}
}),
}
{
type: 'myEntity/addEntity',
payload: {myPayloadTrait: 100, id: 'test'} // Expected behavior: this id should be overwritten in the prepare callback
}
myEntity: {
ids: {
0:"test"
},
entities: {
"test": {
myPayloadTrait: 100
id: "test"
}
}
}