Не уверен, что могу дать правильный или неправильный ответ на этот вопрос, так как у каждого есть свои плюсы и минусы.
Мое эмпирическое правило - подключать глубоко вложенные компоненты только тогда, когда их родители являются «доверенными лицами реквизита».То есть они принимают реквизиты только для того, чтобы передать их своим детям.
Если я могу цитировать (себя) из этот ответ :
Избегайте подключения компонентов, когдаВы можете и передать реквизиты детям, главная причина этого состоит в том, чтобы предотвратить зависимость от редукса.Я предпочитаю держать мои компоненты "тупыми", как я могу, и пусть они заботятся только о том, как все должно выглядеть.У меня есть некоторые компоненты, которые касаются того, как все должно работать, и эти компоненты в основном имеют дело с логикой и передачей данных дочерним элементам, это компоненты, которые я часто подключаю.
Когда я замечаю, что мое приложение масштабируетсяи некоторые из моих компонентов действуют как прокси-сервер реквизитов (я даже получил слово для этого! "Propxy"), то есть они получают реквизиты от своего родителя и передают их, не используя их, я обычно внедряю связанный компонент всередина дерева компонентов, поэтому я могу позволить компонентам «пропси» вниз по потоку дерева быть более легкими и тонкими
Следует также отметить, что еще одна ловушка с подключенными компонентами заключается в том, что каждый рендер будет запускатьmapstateToProps
метод.если у вас есть какая-то тяжелая логика, вы должны запомнить ее, обычно это делается с помощью перевыбрать
Что касается подключения компонента, то вы, вероятно, уже это понимаете.вы получаете быстрый доступ к состоянию Provider
через контекст реагирования.
Редактировать
В продолжение вашего комментария:
орендеринг - у меня не будет намного больше ненужного рендеринга, если у меня будут глубоко вложенные дочерние элементы (обычные в средних и больших приложениях), которые будут без необходимости перерисовываться при каждом родительском обновлении
Ну и оболочка connect
HOCне будет вызывать повторную визуализацию, если предыдущий объект mapStateToProps
совпадает с текущим возвращаемым объектом.так что никаких ненужных повторных визуализаций для вашего подключенного компонента не будет.
Более подробно о том, как он работает и как развивалась логика, вы можете прочитать в этой статье