【问题标题】:How to handle an event that produces changes in multiple state domains?如何处理在多个状态域中产生变化的事件?
【发布时间】:2015-08-13 11:03:02
【问题描述】:

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

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

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

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)?

【问题讨论】:

    标签: flux redux


    【解决方案1】:

    在类似的情况下,我选择从目标操作中分派另一个操作。

    试图在代码中显示这一点

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

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

    【讨论】:

    • 这是我们官方建议的,是的。
    • 你能解释一下为什么这是更好的方法吗?
    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2019-02-21
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多