useState
Композабл useState создает реактивное и совместимое с SSR общее состояние.
Использование
// Создайте реактивное состояние и установите значение по умолчанию
const count = useState('counter', () => Math.round(Math.random() * 100))
Поскольку данные внутри
useState
будут сериализованы в JSON, важно, чтобы они не содержали ничего, что нельзя сериализовать, например, классы, функции или symbol.useState
это зарезервированное имя функции, преобразуемое компилятором, поэтому вы не должны называть свою собственную функцию useState
.Использование shallowRef
Если вам не нужно, чтобы ваше состояние было глубоко реактивным, вы можете объединить useState
с shallowRef
. Это может улучшить производительность, когда ваше состояние содержит большие объекты и массивы.
const state = useState('my-shallow-state', () => shallowRef({ deep: 'not reactive' }))
// isShallow(state) === true
Тип
useState<T>(init?: () => T | Ref<T>): Ref<T>
useState<T>(key: string, init?: () => T | Ref<T>): Ref<T>
key
: Уникальный ключ, который гарантирует, что получение данных правильно дедублируется по запросам. Если вы не предоставите ключ, то будет сгенерирован ключ, уникальный для файла и номера строки экземпляраuseState
.init
: Функция, которая предоставляет начальное значение для состояния, когда оно не инициализировано. Эта функция также может возвращатьRef
.T
: (только для TypeScript) Укажите тип состояния