将动作中的元数据发送到 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.../> 导致了 actionaction.payload 只给我在 <SomeComponent.../> 中保存在 value 中的内容,仅此而已。 有没有办法用 onSelect 发送更多信息,或者这是不好的做法,无论如何我都需要为每个 component <SomeComponent.../> 发送一个 action

当然可以。这是你的 action 和你的 reducer,你可以附加任何你想要的信息。

构建动作的最常见方法是 Flux Standard Action 方法,它希望您的动作看起来像 {type, payload, meta, error},但实际上取决于您在动作中投入的内容。

如需更多想法,您可能需要通读 Redux 文档的 Structuring Reducers - Reusing Reducer Logic 部分。