Приведи пример использования стейта компонента вместо стейта Redux

Ответ

import React, { useState } from 'react';

function Counter() {
  // Локальный стейт компонента
  const [count, setCount] = useState(0);

  const increment = () => setCount(prev => prev + 1);
  const decrement = () => setCount(prev => prev - 1);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>+</button>
      <button onClick={decrement}>-</button>
    </div>
  );
}

Локальный стейт лучше использовать когда:

  1. Данные нужны только в одном компоненте
  2. Нет необходимости делиться состоянием с другими компонентами
  3. Состояние простое и не требует сложной логики обновления

Redux стоит использовать для глобального состояния, которое нужно многим компонентам или требует сложных обновлений.

Ответ 18+ 🔞

Ну, представляешь, сидишь ты такой, пишешь компонент, и тут — бац! — надо ему своё собственное, интимное состояние. Ну, как у тебя в голове мысль: "А не пойти ли мне нахуй?". Вот для этого и есть useState, ебать мои старые костыли!

Смотри, как просто, аж пиздец:

import React, { useState } from 'react';

function Counter() {
  // Локальный стейт компонента
  const [count, setCount] = useState(0);

  const increment = () => setCount(prev => prev + 1);
  const decrement = () => setCount(prev => prev - 1);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>+</button>
      <button onClick={decrement}>-</button>
    </div>
  );
}

Вот эта штука [count, setCount] — это как твои личные трусы. Только ты в них ковыряешься, и другим до них, в общем-то, похуй.

Так когда же эту локальную хуйню использовать, а когда бежать за Redux'ом?

Локальный стейт — твой выбор, когда:

  1. Данные нужны только этому компоненту, как тайная любовная записка, которую никому показывать не хочешь.
  2. Делиться этим состоянием с другими — ну нахуй не надо. Пусть живут своей жизнью.
  3. Всё просто, без этих ваших ебушки-воробушки с кучей редьюсеров и экшенов. Нажал кнопку — число изменилось. Красота!

А вот Redux — это уже ёперный театр. Тащи его, когда:

  • Состояние должно быть глобальным, и к нему должны иметь доступ пол-приложения, как к холодильнику на общей кухне.
  • Логика обновлений сложная, пиздец как. Не просто +1, а "получил это, преобразовал то, отправил сюда, получил ошибку, откатил".
  • Компонентов много, и они все хотят одно и то же, а ты уже устал передавать пропсы через десять уровней вглубь, чувствуя себя идиотом.

Короче, если можно обойтись малыми силами — не выёбывайся. useState и так сойдёт. Зачем городить огород из connect, mapStateToProps и прочей хуйни, если твоему счётчику нужно только от нуля до десяти досчитать?