【问题标题】:Send metadata within an action to the reducer in redux将动作中的元数据发送到redux中的reducer
【发布时间】:2017-10-25 07:46:01
【问题描述】:

我有一个基于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?想象一下,我多次使用组件&lt;SomeComponent.../&gt;。当onSelect 被触发时,我不知道哪个渲染组件触发了action。 如果我想稍后处理value_select = function(state, action) {... 中的信息,我想知道是哪个component 导致action 正确处理我的数据。我需要在value_select() 中动态设置XYZ,具体取决于哪个&lt;SomeComponent.../&gt; 导致actionaction.payload 只给我保存在value&lt;SomeComponent.../&gt; 中的内容,仅此而已。 有没有办法通过onSelect 发送更多信息,或者这是不好的做法,我需要为每个component &lt;SomeComponent.../&gt; 提供action

【问题讨论】:

    标签: javascript reactjs redux antd


    【解决方案1】:

    当然。这是你的行动和你的减速器,你可以附加任何你想要的信息。

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

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

    【讨论】:

    • 感谢您的提示。您正在写这完全取决于我“我在动作/减速器中投入的内容”。我仍然无法理解的是如何根据单击的内容将其他信息输入到 handleSelect(value) 中。这必须发生在组件的某个地方,因为我多次使用该组件。因此,组件必须提供信息,即它被点击(每个组件的唯一信息)
    • 如果您有多个组件实例都试图使用同一个动作创建器,那么这些组件传递给动作创建器的参数仍然取决于您。例如,onClick={() =&gt; handleSelect(value, someId)}。然后,修改操作创建者以在操作中包含该 ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2017-09-30
    • 1970-01-01
    • 2020-02-10
    • 2018-05-29
    • 2018-02-25
    • 2017-04-13
    相关资源
    最近更新 更多