将动作中的元数据发送到 redux 中的 reducer
Send metadata within an action to the reducer in redux
我有一个组件构建在 Ant Design
https://ant.design/components/select/
的 Select
组件上
<SomeComponent
onSelect = { this.props.handleSelect }
onDeselect = { this.props.handleDeselect }
selectionList = { valuesList }
value = { values }/>
onSelect
触发动作 this.props.handleSelect
export function handleSelect(value) {
return dispatch => {
dispatch(actionCreator(HANDLE_SELECT, value));
}
}
该操作进入 reducer
case HANDLE_SELECT: {
const newValues = value_select(state, action);
return {
...state,
find: {
...state.a,
values: newValues
}
}
}
最后,value_select
被调用来完成所有魔术
export const value_select = function(state, action) {
...
const newData = {
XYZ: action.payload
}
return newData
}
这让我想到了我的问题。
是否可以使用 action
进一步发送 metadata
?假设我多次使用 <SomeComponent.../>
组件。当触发 onSelect
时,我不知道哪个渲染组件触发了 action
。
如果我想稍后处理value_select = function(state, action) {...
中的信息,我想知道是哪个component
导致action
正确处理我的数据。我需要在 value_select()
中动态设置 XYZ
,具体取决于哪个 <SomeComponent.../>
导致了 action
。 action.payload
只给我在 <SomeComponent.../>
中保存在 value
中的内容,仅此而已。
有没有办法用 onSelect
发送更多信息,或者这是不好的做法,无论如何我都需要为每个 component <SomeComponent.../>
发送一个 action
?
当然可以。这是你的 action 和你的 reducer,你可以附加任何你想要的信息。
构建动作的最常见方法是 Flux Standard Action 方法,它希望您的动作看起来像 {type, payload, meta, error}
,但实际上取决于您在动作中投入的内容。
如需更多想法,您可能需要通读 Redux 文档的 Structuring Reducers - Reusing Reducer Logic 部分。
我有一个组件构建在 Ant Design
https://ant.design/components/select/
Select
组件上
<SomeComponent
onSelect = { this.props.handleSelect }
onDeselect = { this.props.handleDeselect }
selectionList = { valuesList }
value = { values }/>
onSelect
触发动作 this.props.handleSelect
export function handleSelect(value) {
return dispatch => {
dispatch(actionCreator(HANDLE_SELECT, value));
}
}
该操作进入 reducer
case HANDLE_SELECT: {
const newValues = value_select(state, action);
return {
...state,
find: {
...state.a,
values: newValues
}
}
}
最后,value_select
被调用来完成所有魔术
export const value_select = function(state, action) {
...
const newData = {
XYZ: action.payload
}
return newData
}
这让我想到了我的问题。
是否可以使用 action
进一步发送 metadata
?假设我多次使用 <SomeComponent.../>
组件。当触发 onSelect
时,我不知道哪个渲染组件触发了 action
。
如果我想稍后处理value_select = function(state, action) {...
中的信息,我想知道是哪个component
导致action
正确处理我的数据。我需要在 value_select()
中动态设置 XYZ
,具体取决于哪个 <SomeComponent.../>
导致了 action
。 action.payload
只给我在 <SomeComponent.../>
中保存在 value
中的内容,仅此而已。
有没有办法用 onSelect
发送更多信息,或者这是不好的做法,无论如何我都需要为每个 component <SomeComponent.../>
发送一个 action
?
当然可以。这是你的 action 和你的 reducer,你可以附加任何你想要的信息。
构建动作的最常见方法是 Flux Standard Action 方法,它希望您的动作看起来像 {type, payload, meta, error}
,但实际上取决于您在动作中投入的内容。
如需更多想法,您可能需要通读 Redux 文档的 Structuring Reducers - Reusing Reducer Logic 部分。