В чем плюсы и минусы хранения данных в одном месте в Redux

Ответ

Плюсы:

  • Централизованное состояние – все данные в одном месте, упрощает отладку и логирование.
  • Предсказуемость – изменения состояния происходят через строгие редьюсеры.
  • Доступность – данные доступны из любого компонента без пропс-дриллинга.
  • Инструменты разработчика – Redux DevTools позволяют отслеживать изменения и "путешествовать во времени".

Минусы:

  • Избыточность – не все данные нужны глобально (например, форма ввода).
  • Бойлерплейт – много кода для простых действий (actions, reducers).
  • Производительность – подписка на изменения может вызывать лишние ререндеры.

Пример:

// Избыточное хранение локального состояния формы в Redux
const formReducer = (state, action) => {
  switch (action.type) {
    case 'UPDATE_INPUT': 
      return { ...state, [action.field]: action.value };
    default: return state;
  }
};
// Лучше использовать локальный state или React Context для таких случаев.

Ответ 18+ 🔞

А, ну вот, опять про этот ваш Redux, блядь! Сидит народ, как на игле, на централизованном состоянии подсел. Давайте, сука, разложим по полочкам, что тут хорошо, а где собака зарыта, точнее, где она насрала.

Что там у них хорошего, а?

  • Всё в одной куче, как в амбаре у рачительного хозяина. Все данные в одном месте — не надо, сука, по всему приложению бегать и искать, где что запрятали. Отладка, логирование — одно удовольствие, ёпта. Открыл DevTools и видишь всю подноготную.
  • Предсказуемость, как у бульдозера. Изменяешь состояние только через редьюсеры — строгие такие, суровые процедуры. Никакого самовольства, блядь. Захотел поменять данные — определи тип экшена и вперёд.
  • Доступность, как воздух. Захотел из компонента, который в самом пиздецы приложения, достать данные — пожалуйста, на тебе. Никакого этого ада с пропс-дриллингом, когда прокидываешь пропсы через десять компонентов, которые нихуя в них не нуждаются.
  • Инструменты — просто песня. Redux DevTools — это вообще отдельная тема. Можно отслеживать каждое изменение, как муху на стене, и даже "путешествовать во времени", откатывая состояние назад. Красота, блядь!

А теперь, сука, ложка дёгтя, и не одна:

  • Избыточность, мать её. Не все данные-то нужно тащить в глобальный стор, ёбана! Вот, например, состояние формы ввода — оно кому, кроме самой формы, нахуй нужно? А нет, давайте запихнём в Redux, чтобы весь мир знал, что я ввёл "hello world".
  • Бойлерплейт — овердохуища. Чтобы просто обновить поле, нужно, блядь, создать константу для типа экшена, написать экшен-криэйтор, прописать обработку в редьюсере... Мозг вытекает, честное слово. Для простых вещей — как из пушки по воробьям.
  • Производительность может хромать. Подписка на изменения — штука хорошая, но если неаккуратно сделать, то любое чиханье в сторе будет вызывать ререндер у половины приложения. А потом удивляемся, почему всё тормозит.

Смотрите сюда, наглядный пиздец:

// Типичный пример, когда Redux используют не по уму. Хранят в нём всякую хуйню.
const formReducer = (state, action) => {
  switch (action.type) {
    case 'UPDATE_INPUT': 
      return { ...state, [action.field]: action.value }; // О, бля, обновили инпут! Весь мир вздрогнул!
    default: return state;
  }
};
// Мужики, да для такого говна есть же локальный state через useState или, на крайняк, Context! Зачем городить огород?

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