2016-06-12 3 views
2

Я немного смущен относительно того, как получить состояние из контейнера. Я в порядке с отображением отправки в реквизиты & диспетчерских действий.Как получить состояние из магазина в контейнере?

В документах указано состояние store.getState(), но для этого мне нужно сначала создать mapStateToProps, чтобы вызвать this.props.getState() или я могу просто вызвать store.getState() в любом месте моего контейнера, У меня будет доступ к магазину, прошедшему через моего Провайдера?

ответ

3

Первый аргумент функции connect() является необязательной функцией, известной как mapStateToProps. Если вы предоставите аргумент mapState, компонент-оболочка, сгенерированный connect(), автоматически вызывается функцией mapState при каждом обновлении хранилища и переходит в новое состояние. Затем ваша функция mapState должна извлекать любые части данных, которые должны быть связаны с компонентом, и возвращать их. (mapStateToProps - это просто конкретное использование понятия, известного как функция «селектор» - см. http://redux.js.org/docs/recipes/ComputingDerivedData.html для получения дополнительных примеров использования селекторов).

Ваш собственный код компонента никогда не должен обращаться к магазину напрямую, а просто принимать принимаемые реквизиты. См. http://redux.js.org/docs/FAQ.html#store-setup-multiple-stores

0

Так что это поток в Редуксе из того, что я понял. Вы вызываете действие из своего контейнера с помощью метода onClick, который, в свою очередь, уменьшается и возвращает копию состояния. Эта копия состояния доступна в вашей функции mapStateToProps, которая установит ваш объект реквизита на новый объект состояния. Ваша функция рендеринга будет использовать этот новый обновленный объект prop и визуализировать, если есть какое-либо обновление состояния.

Надеюсь, что это разрешит ваш запрос.

Ознакомьтесь с моим реестром github, где я создал приложение «Курсы» для добавления курсов. https://github.com/sidharthmehra/ReactReduxApp

Смежные вопросы