Передача избыточного состояния диспетчеру - PullRequest
0 голосов
/ 26 марта 2019

В настоящее время я пишу проект React (использующий примитивы и перекомпоновку) и пытаюсь передать свое состояние переизбытка в мою диспетчеризацию внутри моего соединения.

Я бы не хотел писать свой код подключения дважды, но мне пришлось это сделать, чтобы 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 Ответ

0 голосов
/ 26 марта 2019

Вместо использования двух HOC для подключения вы можете просто передать данные компоненту в качестве реквизита и вызвать создателя действия с необходимыми данными

как

export default compose(
  connect(({locales: { currentLocaleCode }}) => ({ currentLocaleCode }),
  (dispatch) => ({
    fetchArticles: (dispatch) => ({
      fetchPage: =>
        (currentLocaleCode) => dispatch(pagesActions.fetchPage(currentLocaleCode))
    })
  })),
...

и в подключенном компоненте вы бы назвали fetchPage как

this.props.fetchPage(this.props.currentLocaleCode);
...