Об этом проекте
Valtio — это библиотека управления состоянием, построенная вокруг JavaScript-прокси и пригодная для использования с React и в чистом vanilla JavaScript. Её основная идея проста: оберните объект состояния с помощью `proxy()`, и он станет самоосознанным прокси, который можно мутировать как обычный объект из любого места кода.
Ключевые возможности, описанные в README:
- **Прокси-состояние**: `proxy({ count: 0, text: 'hello' })` создаёт мутируемое состояние; мутации вроде `++state.count` работают так же, как с обычными объектами.
- **Интеграция с React**: `useSnapshot(state)` возвращает локальный снимок для рендеринга. Компоненты перерисовываются только при изменении тех частей состояния, к которым они обращались, что проект называет оптимизацией рендеринга. Опция `sync: true` отключает батчинг для случаев вроде контролируемых полей ввода.
- **Подписки**: `subscribe` работает с целым состоянием или подобъектами, а `subscribeKey` нацелен на примитивные значения. Утилита `watch` автоматически подписывается на основе использования.
- **Поддержка Suspense**: Совместимо с хуком `use` из React 19 для чтения асинхронных данных, хранящихся в состоянии, при этом родитель обрабатывает fallback и ошибки.
- **Неотслеживаемые объекты**: `ref` сохраняет большие или особые объекты (например, DOM-узлы) внутри состояния, не оборачивая их в прокси.
- **Использование в vanilla**: `valtio/vanilla` экспортирует `proxy`, `subscribe` и `snapshot` для использования вне React.
- **Утилиты**: `useProxy` предлагает упрощённый поверхностный прокси для новичков; `proxySet` и `proxyMap` имитируют поведение нативных Set и Map; вычисляемые свойства можно определять через геттеры объекта.
- **Инструменты разработчика**: Интеграция с Redux DevTools Extension для обычных объектов и массивов.
- **Совместимость**: Valtio v2 ориентирован на React 18 и выше, зависит только от `react` и работает с такими рендерерами, как react-dom, react-native и react-three-fiber, а также с Node.js и Next.js.
README также отмечает особенности типизации TypeScript вокруг типа снимка только для чтения, предупреждает о поведении `this` в методах (рекомендуя стрелочные функции) и указывает на плагин eslint, а также на рецепты сообщества для организации действий, сохранения состояния, использования контекста и разделения/композиции состояния.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.