1

我有一个组件构建在Select来自Ant Design https://ant.design/components/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
}

这让我想到了我的问题。是否可以进一步metadata发送action<SomeComponent.../>想象一下,我多次使用该组件。我不知道在触发action时触发了哪些渲染组件onSelect。如果我想value_select = function(state, action) {...稍后处理信息,我想知道是什么component导致了action正确处理我的数据。我需要动态设置XYZvalue_select()具体取决于<SomeComponent.../>导致action. action.payload只给我保存在value<SomeComponent.../>东西,仅此而已。有没有一种方法可以发送更多信息,onSelect或者这是一种不好的做法,无论如何我都需要一个actionfor each component <SomeComponent.../>

4

1 回答 1

2

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

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

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

于 2017-05-24T20:12:19.027 回答