TGViewer
React React @react_lib · 2.66K subscribers
Post #754 582
Сейчас покажу вам приём, который сильно упрощает React-код: не храните в state то, что можно вычислить.

Очень часто вижу такое:


const [fullName, setFullName] = useState('')

useEffect(() => {
setFullName(`${user.firstName} ${user.lastName}`)
}, [user])


На первый взгляд всё нормально. Но по факту это лишний state, лишний useEffect и лишний ререндер.

Гораздо проще так:


const fullName = `${user.firstName} ${user.lastName}`


Или если вычисление тяжёлое:


const filteredItems = useMemo(() => {
return items.filter(item => item.active)
}, [items])


Что это даёт:
• меньше кода
• меньше багов из-за рассинхрона
• проще поддержка
• компонент легче читать

Я обычно задаю себе один вопрос:
это данные, которые реально меняются отдельно, или это просто производное значение?

Если производное почти всегда не нужен useState.

Вот где особенно часто ошибаются:

• fullName из firstName и lastName
• isFormValid из значений формы
• sortedList из массива и сортировки
• visibleItems из фильтра и исходных данных

Чем меньше лишнего state в компоненте, тем спокойнее вам потом его дебажить.

📲 Мы в MAX

✍️ @React_lib
  • 👍 2
More from @react_lib
  1. Sep 11, 2026🚨 Избегай монолитных компонентов, которые объединяют в себе отображение, управление состо…
  2. Sep 7, 2026❌ Избегайте использования нескольких переменных состояния для отслеживания статуса. ✅ Вмес…
  3. Aug 31, 2026Сегодня написал пост на тему, которая регулярно бьёт по скорости разработки: почему React-…
  4. Aug 24, 2026❌ Избегайте «прокидывания» пропсов (prop-drilling) для расширения компонентов ✅ Вместо это…
  5. Aug 23, 2026🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.r…
  6. Aug 21, 2026⚛️ Реактивность - это просто (и всего 35 строк кода) Мы часто воспринимаем реактивность в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →