2017-01-27 4 views
1

Я знаю, что это может быть немного основанный на мнении вопрос, но я считаю важным.React & Redux - компонент контейнера внутри презентационного компонента?

Вкратце, Хорошая практика заключается в том, чтобы реагировать на компоненты контейнера внутри реагирующего компонента? Как вы считаете, могут ли быть преимущества и недостатки этой практики наличия компонентов контейнера внутри реагирующего презентационного компонента?

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

В чем может заключаться проблема с наличием компонентов контейнера внутри презентационного компонента? Ну, поскольку компоненты контейнера обычно имеют доступ к (глобальному) хранилищу (в сокращении), вы не можете просто узнать из реквизита презентационного компонента, как будет выглядеть этот компонент. Поскольку хранилище повлияет на поведение компонента контейнера и, поскольку оно включено в презентационный компонент, тогда компонент представления больше не является фиктивным компонентом. Как вы думаете?

+1

Для чего это стоит, React dev, который сделал одну из [исходных сообщений в компонентах для презентаций/контейнеров] (https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.56w230l7z) позже вернулся и отредактировал его, чтобы сказать, что он думает, что использует контейнеры внутри презентационных компонентов, когда это необходимо, прекрасно - см. вторую сноску. –

ответ

1

Я предполагаю, что из-за присутствующего компонента вы имеете в виду функциональный компонент ReactJS?

Если это так, я не вижу проблемы с этим подходом. Полученный компонент не был бы исключительно презентационным, но он выполнил бы работу , определяющую состав компонентов (компонентов), которые он оказывает.

В зависимости от контекста это может быть именно то, что вам нужно.

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

+0

Но что, если вы хотите опубликовать свои презентационные компоненты, например, для других приложений-приложений? Вы не хотите, чтобы компонент зависел от того, какой механизм хранилища использует приложение? Кроме того, тестируемость компонента может быть проще, если он не содержит компонент контейнера –

+0

Это правда. Как я уже сказал, в этом контексте уже не будет рассматриваться презентация. Были бы другие области, которые могли бы быть реорганизованы в презентацию, вероятно, в компонентах, которые композиционный будет оказывать (или другому потомству) – Pineda

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