---
title: "ViewState API — личное состояние блоков в браузере"
description: "Хранение личного состояния блока в браузере, например открыт ли переключатель, вне сохранённого документа."
source: https://blokeditor.com/ru/docs/view-state-api/
lastmod: 2026-10-06
---

Фреймворк JavaScript

Расширение и система ViewState

На этой странице viewState.get(blockId, key)

# ViewState API: личное состояние блока

Личное состояние блока, которое принадлежит этому браузеру, а не документу. Переключатель хранит здесь, открыт ли он, под ключом `'open'`. Внутри инструмента это `api.viewState`.

Значения хранятся как JSON в `localStorage` под id документа. Они не сохраняются в документе и не уходят участникам совместной работы. Запись, которую не меняли 90 дней, удаляется.

Без `localStorage` значения живут в памяти только этой вкладки.

Обновлено 6 окт. 2026 г. [Редактировать на GitHub](https://github.com/JackUait/blok/blob/main/docs/src/components/api/api-data.ts)

### Как получить экземпляр редактора

Методы ниже вызываются на редакторе, созданном через new Blok(). Они доступны после того, как разрешится editor.isReady.

TypeScript

```
// You already hold the instance returned by the constructor.
const editor = new Blok({ holder: 'editor' });
await editor.isReady;

// Call any API method on it.
editor.caret.setToLastBlock('end');
```

## Методы

### viewState.get(blockId, key)

unknown

Значение блока под ключом `key` в этом браузере или `undefined`, если его нет.

TypeScript

```
const open = editor.viewState.get(blockId, 'open') === true;
```

### viewState.set(blockId, key, value)

void

Сохраняет значение блока в этом браузере. Значение должно укладываться в JSON. Работает в режиме только для чтения и не попадает в историю отмены.

TypeScript

```
editor.viewState.set(blockId, 'open', true);
```

### viewState.onChange(blockId, key, listener)

() => void

Вызывает `listener` с новым значением, когда его меняет эта вкладка или другая вкладка этого браузера с тем же документом. Возвращает функцию отписки.

TypeScript

```
const unsubscribe = editor.viewState.onChange(blockId, 'open', (value) => {
  setOpen(value === true);
});

// Later
unsubscribe();
```

### viewState.isCreatedHere(blockId)

boolean

`true` для блока, который эта вкладка создала после отрисовки документа: из меню блоков, сочетанием клавиш, вставкой, преобразованием или разделением. `false` для блоков из сохранённого документа, из другой вкладки, от участника совместной работы, а также после отмены и повтора. Помогает открыть новый блок для того, кто его создал.

TypeScript

```
// In a block tool
constructor({ api, block }) {
  this.api = api;
  this.block = block;
}

rendered() {
  const { viewState } = this.api;
  const id = this.block.id;

  if (viewState.get(id, 'open') === undefined && viewState.isCreatedHere(id)) {
    viewState.set(id, 'open', true);
  }
}
```
