redux工具箱多参数减速器?redux工具包



给定此

export const slice = createSlice({
name: 'reducer',
initialState: {
},
reducers: {
test: (state, action) => {
console.log(action.payload) // 1
} 
},
})

然后我运行这个

dispatch(test(1,2,3,4,5,6,7)) 

action.payload只是第一个参数。我怎样才能得到另外6个?

阅读相关文档

默认情况下,生成的操作创建者接受单个参数,该参数变为action.payload。这需要调用方正确构建整个有效负载并将其传入

所以你可以用调用操作

dispatch(test([1,2,3,4,5,6,7])) 

这样,有效负载现在将是您传递的数组。


但是,如果您需要能够用多个参数调用它,则可以使用prepare回调

如果要将metaerror属性添加到操作中,或自定义操作的payload,则必须使用prepare表示法。

export const slice = createSlice({
name: 'reducer',
initialState: {
},
reducers: {
test: {
reducer(state, action){
console.log(action.payload) // 1
},
prepare(...arguments){
return {
payload: arguments;
}
}
}
},
});

这样,您原来调用操作的方式将再次产生一个数组的有效负载,该数组将包含您传递的所有参数,而不管它们的编号如何。

是的,我们可以在redux reducer中发送多个参数,但在封装在单个对象中之后。单个对象参数可以是数组或JSON对象。

// as an array
dispatch(test(["first","second","third"]));
// as a JSON object
dispatch(test({ first:1, second:2, third:3 }));

你的结果会是这样的。

export const slice = createSlice({
name: 'reducer',
initialState: {
},
reducers: {
test: (state, action) => {
console.log(action.payload) // ["first","second","third"]
// or in case of JSON object
console.log(action.payload) // { first:1, second:2, third:3 }
} 
},
})

相关内容

  • 没有找到相关文章

最新更新