тот же тип действия для комбинированных редукторов - PullRequest
0 голосов
/ 21 ноября 2019

Я новичок в React, просто вопрос по редукторам. Ниже приведен пример кода из книги:

export default createStore(combineReducers(
{
    modelData: ReducerOne,
    stateData: ReducerTwo
 }));

И в книге написано:

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

Ниже приведены мои вопросы:

Q1. Допустим, есть действие, и тип действия называется «Обновление», только ReducerTwo обрабатывает этот тип действия. Означает ли это, что сначала будет вызываться ReducerOne, а затем вызывается ReducerTwo? если да, то это неэффективно, не так ли? Image Существует много редукторов, большинство из которых не обрабатывают соответствующий тип, будут вызываться до тех пор, пока не будет вызван правильный редуктор?

Q2. Значит ли это, что типы действий должны быть уникальными во всех редукторах? Например, ReducerTwo обрабатывает тип действия «Обновление», поэтому ReducerOne не может обрабатывать «Обновление», и мы должны изменить имя на что-то вроде «Update_One»? И каждый раз, когда мы добавляем новый редуктор, нам нужно проверять все существующие редукторы, чтобы увидеть, будут ли дублированные имена типов действий, что является утомительным и подверженным ошибкам процессом?

1 Ответ

0 голосов
/ 21 ноября 2019

Это пример редуктора:

export default (state=INIT_STATE, action) => {
  switch(action.type) {
    case CRUD_CREATE_SUCCESS: {
      return {
        ...state,
        alertMessage: 'Registro creado correctamente.',
        showMessage: true,
        currentPage: 0,
        selectedItem: null
      }
    }
    case CRUD_DELETE_SUCCESS: {
      return {
        ...state,
        alertMessage: 'Registro eliminado correctamente.',
        showMessage: true,
        currentPage: 0,
        selectedItem: null
      }
    }
    case CRUD_UPDATE_SUCCESS: {
      return {
        ...state,
        alertMessage: 'Registro actualizado correctamente.',
        showMessage: true,
      }
    }
  }
};

И все они имеют одинаковый формат.

Как видите, нет способа узнать, к какому адресукаждое действие. Таким образом, это в основном соответствует схеме цепочки ответственности .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...