coolswood
@coolswood
https://coolswood.github.io

Как правильно организовать общение между компонентами?

Имеется карточка товара. На ней множество мелких компонентов. Например, "Добавить в избранное". Элемент простейший - при клике сердечко должно закраситься, при повторном потерять окрас. Вопрос в организации кода. Я при клике изменяю элемент через state. Если обновлять его в родителе, то перерендеривается весь родительский компонент, поэтому вынес его отдельно, проблема исчезла. Но мне нужно еще делать отправку данных на сервер при клике. По идее тогда мне запрос на сервер тоже делать в этом маленьком компоненте?
Это не сочитается с принципом, что у нас все запросы должны быть в главном умном компоненте, а остальные должны быть простыми, без стейта и запросов. Но если все делать через основной будет куда перерендеров. Как вы поступаете в такой ситуации?
  • Вопрос задан
  • 222 просмотра
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
Можно сделать так:
1. Метод оnClick передается из родительского компонента.
2. state иконки высчитывается по полученным props, но так же меняется по клику, для более комфортного пользовательского опыта.
3. По возвращению ответа от сервера обновляется вся карточка. Так же, обновляется state иконки в computeDerivedState, мало ли была ошибка и товар не попал в избранное.
4. В случае ошибки, левом нижнем углу экрана можно показать всплывающее уведомление. Для этого можно написать action и вызывать его в блоке catch асинхронных действий.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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