有人能向我解释一下redux工具包中的有效负载是什么吗?
这个值是从哪里来的?
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
export interface CounterState {
value: number
}
const initialState: CounterState = {
value: 0,
}
export const counterSlice = createSlice({
name: 'counter',
initialState,
reducers: {
increment: (state) => {
state.value += 1
},
decrement: (state) => {
state.value -= 1
},
incrementByAmount: (state, action: PayloadAction<number>) => {
state.value += action.payload
},
},
})
export const { increment, decrement, incrementByAmount } = counterSlice.actions
export default counterSlice.reducer
createAction函数创建的action.payload
。这三个字段(payload
、meta
和error
(符合通量标准作用的规范。
有效载荷:
可选的
payload
属性可以是任何类型的值。它表示操作的有效负载。任何有关操作的信息,而不是操作的类型或状态,都应该是payload
字段的一部分。按照惯例,如果error
是true
,则payload
应该是一个错误对象。这类似于用错误对象拒绝promise。
payload
是要发送到商店以更新相应reducer的数据的名称。
export const { increment, decrement, incrementByAmount } = counterSlice.actions
CCD_ 11、CCD_ 12和CCD_。counterSlice.actions
这个名字有误导性,我认为应该是counterSlice.actionCreators
。当您调用这些action creator
函数中的任何一个时,它都会返回一个action
对象。
action objects
是具有两个属性的普通javascript对象:
{ type:"spcialTypeName",payload:"data that you are sending" }
如果您致电increment()
,它将返回以下信息:
// type name is created by this pattern: "slicerName/reducerName"
{type: "counter/increment", payload:undefined}
payload
是undefined
,因为您没有向动作创建者函数传递任何内容。但如果你打电话给increment("my first task")
,这将返回
{type:"counter/increment", payload:"my first task"}
请注意,您不能在redux工具箱中将multipe参数传递给action creators
。例如
increment("my first task","my second task")
这不会导致错误,但是切片器会接受第一个参数作为有效负载。如果需要传递多个参数,则需要传递一个对象。例如:
increment({firstTask:"my first task",secondTask:"my second task"})`
该操作创建者将返回该
{type:"counter/increment", payload:{firstTask:"my first task",secondTask:"my second task"}}
请注意,这个时间负载是一个对象。