如何处理在多个州域中产生变化的事件?

时间:2015-08-13 11:03:03

标签: flux redux

我正在开发一个地图应用程序。它由两部分组成:

  • 显示当前用户位置的组件;和
  • 使用地址建议解决搜索组件。

这些组件依赖于以下状态域:

state.userAddress = {
    name: 'Didzioji g. 10, Vilnius'
};

state.addressSearch = {
    state: 'inactive',
    query: '',
    addresses: []
};

当用户从地址建议列表中选择地址时,它会调用事件处理程序onSelectAddressonSelectAddress需要触发两个状态更改:

  • userLocation设置为新位置;和
  • 通知位置选择提示关闭

设计这个的正确方法是什么?

  • 智能组件应该一个接一个地调度两个动作,一个调用USER_LOCATION_CHANGE更改,另一个调用ADDRESS_SEARCH_HIDE;或
  • 智能组件是否应该调度由两个不同的Reducer处理的单个操作(例如USER_CHANGE_LOCATION)?

1 个答案:

答案 0 :(得分:3)

在类似的情况下,我选择从目标行动中发出另一个行动。

尝试在代码中显示此内容

module.exports.locationChange = function clickElement(element) {
    return function(dispatch, getState) {
        dispatch({
            type: actionTypes.USER_CHANGE_LOCATION
        });

        dispatch({
            type: actionTypes.ADDRESS_SEARCH_HIDE
        });
   }};

我使用redux-thunk进行异步操作。