Каждый проект проходит один и тот же путь. Сначала — кнопка переключения темы. Через месяц — система настроек.
Разница в том, что вы выбрали в первый день.
Состояние в браузере, API как у
useState:
const [theme, setTheme] = useLocalStorage('theme', 'dark')
- Одна настройка
- Прототип или MVP
- Нет планов масштабирования
- Ключи
localStorage расползаются по компонентам- Нет миграций при смене структуры
- Рассинхронизация состояния между вкладками
Это не баг. Это предел подхода.
Когда добавляются язык, feature flags, пользовательские настройки — нужен единый стор:
const theme = useSettings(s => s.theme)
const setTheme = useSettings(s => s.setTheme)
- Один источник правды
- Селекторы → меньше ререндеров
- Миграции версий состояния из коробки
- Синхронизация между вкладками
- +1 зависимость
- 20-30 строк на стор вместо 3 на хук
- Архитектура, которая не разваливается через полгода
- 1 настройка →useLocalStorage
- 2-3 настройки → можно ещё потерпеть
- Система настроек →zustandсразу
localStorage — это инструмент. zustand — это способ не переписывать проект через полгода.#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3🥰2🥱1