Документация API / pinia / _StoreWithState
Интерфейс: _StoreWithState<Id, S, G, A>
pinia._StoreWithState
Базовое хранилище с состоянием и функциями. Не должно использоваться напрямую.
Параметры типа
| Название | Тип |
|---|---|
Id | extends string |
S | extends StateTree |
G | G |
A | A |
Иерархия
StoreProperties<Id>↳
_StoreWithState
Свойства
$id
• $id: Id
Уникальный идентификатор хранилища
Наследуется от
$state
• $state: UnwrapRef<S> & PiniaCustomStateProperties<S>
Состояние хранилища. Установка этого параметра приведет к внутреннему вызову $patch() для обновления состояния.
_customProperties
• _customProperties: Set<string>
Используется плагином devtools для получения свойств, добавленных с помощью плагинов. Удаляется при production сборке. Может использоваться пользователем для добавления ключей свойств хранилища, которые должны отображаться в devtools.
Наследуется от
StoreProperties._customProperties
Методы
$dispose
▸ $dispose(): void
Этот метод останавливает связанную область эффекта хранилища и удаляет его из реестра хранилищ. Плагины могут переопределить этот метод, чтобы выполнить очистку добавленных эффектов. Например, плагин devtools прекращает отображение удаленных хранилищ в devtools. Обратите внимание, что это не удаляет состояние хранилища, и вам придется сделать это вручную с помощью delete pinia.state.value[store.$id], если вы хотите очистить состояние. Если вы этого не сделаете и хранилище будет использовано снова, оно будет использовать предыдущее состояние.
Возвращает
void
$onAction
▸ $onAction(callback, detached?): () => void
Устанавливает коллбек, который будет вызываться каждый раз, когда действие должно быть вызвано. Коллбек получает объект, содержащий всю необходимую информацию о вызываемом действии:
store: хранилище, для которого она вызываетсяname: Название действияargs: Параметры, передаваемые действию
В дополнение к ним он получает две функции, позволяющие задать коллбек по завершению действия или при его неудаче.
Также возвращается функция для удаления коллбека. Обратите внимание, что при вызове store.$onAction() внутри компонента, он автоматически очищается, когда компонент размонтируется, если только параметр detached не установлен в true.
Параметры
| Название | Тип | Описание |
|---|---|---|
callback | StoreOnActionListener<Id, S, G, A> | коллбек, вызываемый перед каждым действием |
detached? | boolean | нужно ли открепить подписку от контекста, из которого она вызывается |
Возвращает
fn
функция, удаляющая наблюдателя
▸ (): void
Возвращает
void
Пример
store.$onAction(({ after, onError }) => {
// Здесь вы можете обмениваться переменными между всеми хуками, а также
// устанавливать наблюдателей и очищать их
after((resolvedValue) => {
// может использоваться для очистки сайд эффектов
. // `resolvedValue` - это значение, возвращаемое действием, если действие это
. // Promise, то будет разрешено значение, а не Promise
})
onError((error) => {
// может использоваться для передачи ошибок
})
})$patch
▸ $patch(partialState): void
Применяет изменение (patch) к текущему состоянию. Позволяет передавать вложенные значения
Параметры
| Название | Тип | Описание |
|---|---|---|
partialState | _DeepPartial<UnwrapRef<S>> | изменения, которые будут применены к состоянию |
Возвращает
void
▸ $patch<F>(stateMutator): void
Группировка несколько изменений в одну функцию. Полезно, когда происходит изменение объектов, таких как Sets или массивы, и применение patch c объектом не является практичным, например, при добавлении элементов в массив. Функция, передаваемая в $patch(), должна быть синхронной.
Параметры типа
| Название | Тип |
|---|---|
F | extends (state: UnwrapRef<S>) => any |
Параметры
| Название | Тип | Описание |
|---|---|---|
stateMutator | ReturnType<F> extends Promise<any> ? never : F | функция, которая изменяет state, не может быть асинхронной |
Возвращает
void
$reset
▸ $reset(): void
Сбрасывает хранилище в исходное состояние, создавая новый объект состояния.
Возвращает
void
$subscribe
▸ $subscribe(callback, options?): () => void
Настройка коллбека для вызова каждый раз, когда изменяется состояние. Функция также возвращает другую функцию для удаления коллбека. Обратите внимание, что при вызове store.$subscribe() внутри компонента, он будет автоматически очищен, когда компонент будет размонтирован, если не установлено значение detached в true.
Параметры
| Название | Тип | Описание |
|---|---|---|
callback | SubscriptionCallback<S> | коллбек, передаваемый наблюдателю |
options? | { detached?: boolean } & WatchOptions<boolean> | Опции watch + detached для отсоединения подписки от контекста (обычно компонента), из которого она вызывается. Обратите внимание, что опция flush не влияет на вызовы store.$patch(). |
Возвращает
fn
функция, удаляющая наблюдателя
▸ (): void
Возвращает
void