Redux Toolkit中的有效负载



有人能向我解释一下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。这三个字段(payloadmetaerror(符合通量标准作用的规范。

有效载荷:

可选的payload属性可以是任何类型的值。它表示操作的有效负载。任何有关操作的信息,而不是操作的类型或状态,都应该是payload字段的一部分。按照惯例,如果errortrue,则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}

payloadundefined,因为您没有向动作创建者函数传递任何内容。但如果你打电话给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"}}

请注意,这个时间负载是一个对象。

相关内容

最新更新