#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. Вау! Спасибо за ссылку, не думал о такой возможности.