2017-01-23 3 views
0

У меня вопрос о том, как создать приложение React/Redux.React/Redux глубокий реквизит dependecy

Насколько я понимаю, это и не рекомендуется ссылаться контейнеры внутри компонента. Однако при размещении компонентов с приложением Redux контейнер верхнего уровня связан с connect() и mapStateToProps и т. Д., Но, кажется, странно передавать в все реквизит вниз по линии до -одно-компонентов.

При структурировании приложение с вложенным компонентом, например, как:

Dialog > Form > Tab > Input Section > Input control 

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

Так что мой вопрос в основном, это действительно то, что рекомендуется и как это обрабатывается? Является ли это, например, упрощенным, устанавливая реквизиты примерно так:

{ 
    inputProps: { visible: false } 
} 

?

Или я могу ссылаться на контейнер внутри моего компонента, поэтому у меня может быть отдельноconnect() только для реквизитов, имеющих отношение к делу?

+0

Взгляните на это: http://stackoverflow.com/questions/34425741/how-should-i-use-redux-with-nested-subcomponents-that-wont-be-reused, также это: https: //github.com/reactjs/redux/issues/419, было сказано, что еще лучше подключить подключенные компоненты к дереву. – Shota

ответ

2

Одним из основных моментов Redux является возможность подключения отдельных компонентов к хранилищу и извлечения необходимых им данных. Кроме того, не переусердствуйте с целым разницей «контейнер/компонент» в терминах разделения вещей в кодовой базе.

Дополнительную информацию о подключении нескольких компонентов см. В разделе «Вопросы по Redux FAQ» по адресу https://redux.js.org/faq/react-redux#should-i-only-connect-my-top-component-or-can-i-connect-multiple-components-in-my-tree, а также твиту Дан Абрамова по адресу https://twitter.com/dan_abramov/status/802569801906475008 для размышлений о структурировании «контейнер против презентаций».

+0

Спасибо @markerikson. – Nsevens

1

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

Просто возьмите redux-form в качестве примера. Это может быть все, что касается компонентов, но они решили использовать и редукс.

+0

Итак, дерево DialogContainer> Dialog> FormContainer> Form> Tab> InputSection> InputControlContainer> InputControl может иметь смысл? И, возможно, было бы предпочтительнее, если бы было много реквизита? – Nsevens

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