Действие, действующее на несколько магазинов

У меня есть действие, которое должно передавать данные как в собственном хранилище, так и в хранилище настроек. Мне это нужно, потому что добавленные данные отличаются и очищаются по-разному.

Мне интересно в таком случае, лучше ли использовать комбайновые редукторы? Или действие в нескольких магазинах является приемлемым решением?

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 ответ

Используйте редукторный состав, будь то с combineReducers() или какой-то ручной подход. Очень часто разные редукторы выполняют одно и то же действие.

В Redux мы почти никогда не предлагаем вам использовать несколько магазинов.

Другие вопросы по тегам