Документация 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