2017-01-03 2 views
3

Я прочитал эту тему. What is the difference between state and props in React?Redux with React-Native и mapStateToProps

В нем говорится, что реквизит отличается от состояний, и в идеале реквизит не должен быть изменен в его компоненте и должен быть изменен только его родительским компонентом.

Однако mapStateToProps функционирует в состояниях реакции-редукции в Редуксе для поддержки компонентов React, которые в основном меняют опоры компонента React при изменении состояния Redux действием Redux.

Это не имеет смысла для меня. Кажется, что это должно было быть mapStateToStates и отображать состояния Redux в состояния компонента React.

Я что-то упустил?

ответ

6

Он говорит, что реквизит отличается от государств и в идеале должен реквизит не может быть изменением его компоненты и только должны быть изменен его родительского компонентом.

Состояние здесь относится к внутреннему состоянию компонента, который компонент может изменять внутренне через .setState().

Однако mapStateToProps функционировать реагируют-перевождите карты состояний в Redux к реквизиту через React компонентов, которые в основном меняющиеся реквизит в React компонента, когда Перевождь состояние изменяются по действию Redux.

Состояние здесь относится к магазину redux, внешнему состоянию. Метод реакцииметода реакции-redux создает компонент HOC - более высокий порядок (компонент, который знает изменения состояния магазина). HOC обертывает немой компонент реакции, который не знает о магазине. Используя mapStateToProps, HOC отображает данные из внешнего состояния и вводит их в реактивный компонент через реквизит.

государство в Redux магазине -> mapStateToProps в HOC -> реквизита, передаваемый немого компонент

Так HOC является родителем, и немой компонент является ребенком. Родитель вставляет новые реквизиты дочернему компоненту, а первое утверждение «реквизиты не должно быть изменено в его компоненте и только должно быть изменено его родительским компонентом» не нарушается.


Примечания:

  1. Более подробную информацию о более высокой составляющей порядка можно найти в статье Дэна Абрамова о Presentational and Container Components.

  2. Чтобы понять, как реагировать-перевождь подключения работы - в онлайн бесплатный курс, Getting Started with Redux, Дэн Абрамов показывает, как построить с нуля подключения (уроки 22-29)

+0

Благодарим за упоминание HOC. Кажется, что метод 'connect' создает HOC, который является оберткой (или родительским компонентом), которая изменяет его реквизит дочернего компонента (или связанного с ним компонента). Это имеет смысл! Правильно ли я понимаю? – gpminsuk

+0

Действительно, вы делаете :) Если вы хотите немного погрузиться - в онлайн-курс, [Начало работы с Redux] (https://egghead.io/courses/getting-started-with-redux), Дэн Абрамов строит соединить с нуля (уроки 22-29). –

0
  1. state здесь mapStateToProps означает state в ReduxStore.

  2. Он отображает Reduxstate в ReactComponentprops. Не обязательно привязывать реквизиты к состояниям, например. Pure Component

0

mapStateToProps передать состояние в качестве реквизита к компоненте с помощью реакции-перевождите подключить функцию(). Рассмотрим функцию connect() как компонент оболочки, которая передает реквизиты для детей.

    mapStateToProps 
connect (state) -----------------------> component(props) 
Смежные вопросы