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 ответа
Некоторые наблюдения:
- Не называйте эти внешние функции "действиями". Они не действия. Они на самом деле сами являются редукторами.
- Будучи редукторами, вы действительно должны передавать им объект состояния. Часто вам нужно / нужно использовать информацию, содержащуюся в текущем состоянии, а также информацию, содержащуюся в объекте действия.
В противном случае это кажется подходящим подходом.
Операторы Switch, безусловно, являются наиболее распространенным подходом, но таблицы поиска также распространены. Вы можете даже использовать простые условия if/then, если хотите. В конечном счете, как вы пишете свои редукторы, зависит от вас.
К вашему сведению, эта тема описана в FAQ по Redux, в разделе FAQ: Редукторы. Вы также можете прочитать новый раздел "Структурирующие редукторы".