Является ли хорошей практика использовать connect действительно часто?

Доброго дня.
Есть два кейса.
1. Много компонентов, в которых много суб-компонентов, которые требуют доступ к state. На начальном этапе спускал state в props от верхних приконнекченных компонентов, сейчас же вижу более удобным не засорять props прямыми зависимостями (компонент не будет работать без state), а делать 80-90% этих суб-компонентов приконнекченными, разумеется, без фанатизма.

2. Есть свойство, хранится в state, которое пользует половина приложения. Это роль пользователя в системе, на ее основе компоненты решают, какую разметку \ компонент отдать. Часто компоненту нужна только эта роль, поэтому передаю ее в props. Но я не вижу props хорошим местом для зависимостей компонента, это скорее место для параметров. Можно использовать connect для всей половины приложения, однако я придумал и альтернативное решение: написать функцию (или класс с методами), которая бы имела доступ к store сама по себе. Вызывая эту функцию в любом месте приложения, не приконнекченный компонент будет получать актуальные данные из state.

Что думаете по каждому вопросу? Хороша ли вообще практика частого использования connect, или лучше стремиться держать приконнекченными несколько ключевых компонент, а в более мелких все-таки юзать props, контекст или описанную во втором пункте функцию?

Заранее спасибо.
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
search
@search
мама говорит что я особенный
Вообще, вся эта история с умными/глупыми компонентами, - о том как эти самые компоненты переиспользовать. Правило левой руки такое: если код зависит от внешнего состояния, то такой код становится сложно переиспользовать. Это относится не только к компонентам, но и к любому коду. connect добавляет зависимость от внешнего состояния, поэтому компонент, завязанный на connect преиспользовать и сложно.

Но вполне нормально юзать connect на любых компонентах. И, если коннект затрудняет переиспользование какого-то конкретного компонента, то всегда можно отвязаться от connect'a и передавать пропсы напрямую из компонента-родителя. Эдакий способ разработки снизу-вверх.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@davidnum95
однако я придумал и альтернативное решение: написать функцию (или класс с методами), которая бы имела доступ к store сама по себе. Вызывая эту функцию в любом месте приложения, не приконнекченный компонент будет получать актуальные данные из state.

Это вы hoc придумали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы