#reactjs #redux #recompose
#reactjs #redux #перекомпозировать
Вопрос:
В настоящее время я пишу проект React (используя redux и recompose) и пытаюсь передать мое состояние redux в мою отправку внутри моего подключения.
Я бы хотел избежать написания моего кода подключения дважды, но мне пришлось сделать это, чтобы currentLocaleCode
отображалось в состоянии, чтобы отправка могла получить его из моего локального состояния.
Вот как это выглядит:
export default compose(
connect(
(
{
locales: { currentLocaleCode }
}
) => ({ currentLocaleCode })
),
connect(null, (dispatch) => ({
fetchPage: () =>
dispatch(pagesActions.fetchPage(currentLocaleCode))
})),
...
Я хотел бы немедленно получить currentLocaleCode
доступный и добиться чего-то вроде следующего:
export default compose(
connect(
({ locales: { currentLocaleCode } }) => ({ currentLocaleCode }),
(dispatch, { currentLocaleCode }) => ({
fetchPage: () =>
dispatch(pagesActions.fetchPage(currentLocaleCode))
}),
...
Возможно ли это?
Ответ №1:
Вместо использования двух подключений, вы могли бы просто передать данные компоненту в качестве реквизитов и вызвать action creator с требуемыми данными
Нравится
export default compose(
connect(({locales: { currentLocaleCode }}) => ({ currentLocaleCode }),
(dispatch) => ({
fetchArticles: (dispatch) => ({
fetchPage: =>
(currentLocaleCode) => dispatch(pagesActions.fetchPage(currentLocaleCode))
})
})),
...
и в подключенном компоненте вы бы вызвали страницу выборки следующим образом
this.props.fetchPage(this.props.currentLocaleCode);
Комментарии:
1. Привет, Шубхам, я случайно добавил дополнительный код, которого там не должно было быть. Сейчас я его удалил. В принципе,
fetchArticles
иfetchPage
не должны были записываться друг в друга, и мой вопрос был скорее в том, как избежать записиconnect
дважды.2. Что касается вашего комментария, я бы хотел избежать необходимости передавать
currentLocaleCode
каждый раз, когда я вызываю свой метод, поскольку он уже доступен в моем состоянии.