Redux - использовать метод объекта действия в редукторе вместо переключателя

Я новичок в redux и смотрел на redux-действия или использование операторов switch в reducer, и, хотя я не против использования оператора switch, я задаюсь вопросом, не проще ли просто использовать вызов метода действия?

Вот что я думаю

import actions from './actions'

const reducer = (state = {}, action) => {
   if (actions[action.type]) return Object.assign({},
       state, actions[action.type](action)
   );
   return state;
}

Я только что проверил это на своем первом редукторе и действии, и это работает, но это кажется довольно очевидным, поэтому я задаюсь вопросом, почему тип переключателя является выбранным способом?

2 ответа

Решение

Некоторые наблюдения:

  1. Не называйте эти внешние функции "действиями". Они не действия. Они на самом деле сами являются редукторами.
  2. Будучи редукторами, вы действительно должны передавать им объект состояния. Часто вам нужно / нужно использовать информацию, содержащуюся в текущем состоянии, а также информацию, содержащуюся в объекте действия.

В противном случае это кажется подходящим подходом.

Операторы Switch, безусловно, являются наиболее распространенным подходом, но таблицы поиска также распространены. Вы можете даже использовать простые условия if/then, если хотите. В конечном счете, как вы пишете свои редукторы, зависит от вас.

К вашему сведению, эта тема описана в FAQ по Redux, в разделе FAQ: Редукторы. Вы также можете прочитать новый раздел "Структурирующие редукторы".

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