@user_of_toster
2) Является ли плохой практикой смешивать локальное и redux-состояние?
Решения вопроса 1
@n1ksON
2. Нет
Небольшой state лучше хранить в компоненте, а не диспатчить стор. К примеру, статус отображения какого-то уведомления не нужно хранить в сторе, для этого лучше использовать state внутри компоненты.
пример — thunksaga может менять стейт, который используется только в одном компоненте вне компонента. Сделать это можно диспатчем экшена. При использовании локального стейта это не осуществить, т.к сага не может получить setState из компонента.
Логично что без redux это не осуществить. Ведь библиотеки называются: redux-thunk и redux-saga. Однако вам никто не мешает делать API-запросы прямо в компоненте, но так делать не нужно. Это считается плохой практикой
Комментировать
Ответы на вопрос 3
@DmitryITWorksMakarov
В редаксе мы данные приложения, например. В локальном состоянии — идентификаторы выбранных элементов в таблице.
Можно очень условно границу провести: то что бы вы хранили в базе, то храним в редаксе, а данные которые храним в приватных переменных класса — в локальном состоянии. Мне такая аналогия ближе — я начинал с десктопных приложений.
Но это всё очень грубо. В конкретной ситуации может быть как угодно.
Можно придумать и обосновать ситуацию, когда хранение всего состояния всех компонентов в редаксе будет оправдано.
2. Учитывая ответ на 1, придётся смешивать.
В общем, редакс и локальное состояние — это инструменты, которые можно использовать кучей разных способов.
@Sanasol
Когда это состояние надо использовать в других местах приложения кроме этого компонента, особенно если это не родительские/дочерние компоненты, то это надо засунуть в «глобальный» стейт.
Во всех остальных случаях это касается только одного компонента, зачем это шарить на всё приложение.
Ну а насчет смешивать совсем бред, если у вас есть глобальные данные которые надо использовать где-то, то как их использовать в компоненте, но при этом не использовать какие-то локальные переменные которые нужны. Где логика?
@profesor08
Если данные нужны только основному компоненту и его потомкам, то достаточно пробросить через контекст, или через пропсы.
А если данные нужны только в рамках компонента и потомкам не пробрасываются, то локальный стейт.
Это больше вопрос удобства, засрешь контекст или пропсы — будет неудобно, засрешь стор — будет неудобно.