Отправка нескольких действий или прослушивание нескольких действий в одном редукторе

#reactjs #redux

#reactjs #redux

Вопрос:

Я не уверен, основано ли это на мнении или на самом деле есть лучшая практика, но вот она:

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

Насколько я знаю о redux, прослушивание действий из нескольких файлов в одном редукторе может привести к раздутому редуктору, что было бы не лучшим способом использования redux. Я не уверен, что отправка нескольких действий лучше. Вот пример:

 ---------First way:
actions/foo.js

export const doSomething = (data) => {
  return(dispatch) => {
    dispatch({type: DO_SOME_THING, payload: data})
  }
}

reducers/foo.js
case FOO_ACTIONS.DO_SOME_THING:
return {...state, data: action.payload}

reducers/bar.js
case FOO_ACTIONS.DO_SOME_THING:
return {...state, fooData:action.payload}
 

Здесь я слушаю одно и то же действие из нескольких редукторов. Или второй способ:

 ---------Second way:
actions/foo.js

export const doSomething = (data) => {
      return(dispatch) => {
        dispatch({type: DO_SOME_THING, payload: data})
        dispatch({type: DO_SOME_THING_FOR_BAR, payload:data})
      }
    }
    
reducers/foo.js
case FOO_ACTIONS.DO_SOME_THING:
return {...state, data: action.payload}

reducers/bar.js
case FOO_ACTIONS.DO_SOME_THING_FOR_BAR:
return {...state, fooData: action.payload}
 

Считается ли одно из двух наилучшей практикой?

Ответ №1:

В руководстве по стилю redux указано, что вы должны разрешить нескольким редукторам отвечать на одно и то же действие.

Итак, отправьте одно действие и реагируйте на него в нескольких редукторах. Это, во-первых, заставляет вас писать действия, которые больше похожи на «описание событий», а не на «действия установщика» (это также рекомендуется, прочитайте все руководство по стилю!). И, кроме того, в зависимости от обстоятельств React может выполнять повторную отправку после каждой отправки, поэтому повторная отправка может дважды перенаправить некоторые компоненты дважды, чего вы, вероятно, также хотите избежать.

Комментарии:

1. Да, именно то, что я искал. Я читал руководство по стилю раньше, но пропустил этот момент, я думаю, ура!

2. Вау! Спасибо за ссылку, не думал о такой возможности.