Scoped Store: Когда useReducer не тянет, а Redux — слишком

Когда локальный стейт в React-модуле начинает расти - разработчик инстинктивно тянется к useReducer+Context . Это работает, пока не перестаёт: ререндеры везде, провайдеры в елочку, логика размазана. В статье разбираю как этот путь выглядит в реальном продакшне на примере редактора субтитров, и почему паттерн Scoped Store на базе Context+Zustand+useRef решает эту проблему чище и проще.

https://habr.com/ru/articles/1034926/

#react #zustand #context_api #useReducer #useState #state_management #оптимизация_ререндеров #useRef #react_performance #frontend_architecture

Scoped Store: Когда useReducer не тянет, а Redux — слишком

Всем привет, я Ислам, фронтенд-инженер, сегодня хочу разобрать такую интересную связку для локальных сложных контекстов состояний в React проектах, а именно связку React Context+useState+useReducer и...

Хабр

Yagiz Nizipli (@yagiznizipli)

react-doctor의 새 규칙 rerender-state-only-in-handlers를 소개한다. useState로 관리 중인 값이 렌더 반환문에서 사용되지 않으면 useRef를 쓰라고 안내하며, 불필요한 리렌더를 줄이도록 돕는 개발 도구 업데이트다.

https://x.com/yagiznizipli/status/2054573748838084747

#react #linting #developertools #useref #rerender

Yagiz Nizipli (@yagiznizipli) on X

@aidenybai another one. cont [view, setView] = useState('login') if (view === 'login') return <blabla> ⚠ react-doctor/rerender-state-only-in-handlers ×3 useState "view" is updated but never read in the component's return — use useRef so updates don't trigger re-renders

X (formerly Twitter)
React で ref をどう扱うかを整理する - Qiita

React を学び始めると、state はよく使う一方で、ref は少し分かりづらく感じることがあります。 この記事では、ref とは何か、state とどう違うのか、どのような場面で使うのかを整理します。 ref とは ref は、レンダリングに直接関係しない値を保持し...

Qiita
音声遅延に悩む初心者Reactエンジニア必見!useRefとMapで作る音声キャッシュ - Qiita

Next.jsとTailwind CSSを使った音声キャッシュの実装 - パフォーマンス改善のためのReactテクニック私はNext.jsとtailwindcssを使用し、フロントエンド開発を行っ…

Qiita
Nice article Understanding React's useRef Hook #React #useRef https://ui.dev/useref
Understanding React's useRef Hook

In this post you'll learn how and why you can use React's useRef Hook to persist values across renders without causing a re-render.

ui.dev