作用于多个商店的动作

Posted

技术标签:

【中文标题】作用于多个商店的动作【英文标题】:Action acting on multiple stores 【发布时间】:2016-06-09 21:28:53 【问题描述】:

我有一个动作需要在它自己的存储和配置存储中传输数据。我需要这个,因为添加的数据不同,而且清除的方式也不同。

我想知道在这种情况下使用组合减速器是否会更好?还是对多个商店进行操作是可以接受的解决方案?

import  PAGE_CHANGE_TITLE  from 'actions/types/page.types';
import  PROJECT_SELECTED  from 'actions/types/projects.types';

const initialState = 
  pages: 
    last: ,
    current: ,
    last5: [],
  ,
  project: localStorage.getItem('project') || ,
;

export function configs(state = initialState, action) 

  switch (action.type) 

  case PAGE_CHANGE_TITLE:

    const last5 = [...state.pages.last5];
    last5.unshift(action.data);
    if (last5.length > 5) 
      last5.pop();
    

    return 
      ...state,
      pages: 
        last: 
          ...state.pages.current,
        ,
        current: 
          ...action.data,
        ,
        last5: last5,
      ,
    ;

  case PROJECT_SELECTED:
    return 
      ...state,
      project: 
        ...action.data,
      ,
    ;

  default:
    return state;
  

【问题讨论】:

【参考方案1】:

使用 reducer 组合,无论是使用 combineReducers() 还是一些手动方法。 different reducers handling the same action 很常见。

在 Redux 中,we almost never suggest you to use multiple stores。

【讨论】:

以上是关于作用于多个商店的动作的主要内容,如果未能解决你的问题,请参考以下文章

发明原理20有效动作连续性原理

如何将情节提要中的多个按钮连接到单个动作?

如何在ngrx/effect(redux-observable)中调度多个动作?

为啥这个 JS/jQuery 作用于多个输入?

Apex Oracle - 多个动态操作

从单个商店动态创建多个 Sencha ExtJS 商店