Перейти к содержимому
Star

Stores ​

Вкладка Stores показывает текущее значение каждого стора в выбранном scope и позволяет подставить в них свои значения.

Вкладка Stores, группировка по файлам; выбран email.$value: sid, файл, фабрика, значение и редактор с кнопками Apply и Silently, via forkВкладка Stores, группировка по файлам; выбран email.$value: sid, файл, фабрика, значение и редактор с кнопками Apply и Silently, via fork

Список ​

Сторы группируются по Файлу, Фабрике, Домену, Модели или Типу (записываемый или производный) — кнопками над списком. Домен и Модель появляются, только когда есть что группировать. Внутри группы сторы идут в порядке строк в исходнике.

В строке — значок (■ записываемый, □ производный), имя, значение и сколько раз стор менялся в записанной истории (×2). Бейджи: derived, нет sid (стор пропустит serialize, а в трейсе он сопоставится только по имени), не сериализуется (serialize: 'ignore').

Юниты одного экземпляра модели можно собрать под понятным именем через registerModel.

Стор ​

Выберите стор, чтобы увидеть подробности: тип, sid, файл (ссылка открывает панель Sources на нужной строке), фабрику, домен, модель, число обновлений, полное значение деревом и последние десять изменений в разделе История (клик открывает транзакцию в логе).

Задать своё значение ​

У записываемых сторов есть редактор с текущим значением в JSON. Применить его можно двумя способами:

  • Применить работает как allSettled: приложение реагирует, правка попадает в лог (✎ devtools) и в запись, а значит, и в экспортированный трейс;
  • Тихо, через fork создаёт новый scope из текущих значений и ваших и делает его живым: watchers и эффекты не запускаются. В логе появляется одна строка ✎ devtools · silent. Нужны fork() и адаптер.

У производных сторов (map, combine) редактора нет: «Производный стор вычисляется из источников: меняйте их.»

Пресеты ​

Сохранить текущую форму как пресет запоминает значения всех записываемых сторов под именем. Кнопка пресета затем применяет их все разом одной правкой в логе (✎ preset “имя”). Пресеты хранятся в localStorage панели отдельно для каждого имени приложения и переживают перезагрузку. × удаляет пресет.

Вызвать ​

Вызвать запускает любое событие или эффект в выбранном scope, «как вызов из приложения»: выберите юнит, введите payload в JSON (в подсказке — последний payload, с которым он вызывался) и нажмите Вызвать. Транзакция помечается как запущенная из deffector.

Снимок ​

Режим снимка: вставлен объект { sid: значение }, diff с двумя изменениями и одним неизвестным ключом

Снимок → переключает вкладку на всё состояние целиком:

  • Скопировать снимок копирует все записываемые сторы как { sid: значение }, как serialize(scope) (сторы без sid — по имени; сторы с serialize: 'ignore' не попадают);
  • вставьте снимок — { sid: значение } или { имя: значение }, — и до применения появится diff: $count 2 → 41, $terms false → true; неизвестные ключи помечены «нет такого стора», совпадающие значения — «без изменений»;
  • Применить или Тихо, через fork применяют только изменившиеся сторы, с тем же смыслом, что и для одного стора.

Снимок из лога сервера, баг-репорта или другой вкладки — самый быстрый способ привести приложение ровно в это состояние.

Какой scope ​

Вкладка показывает scope, выбранный в панели инструментов, или тот, который отрисовывает приложение. Пока приложение показывает прошлое, правки идут в форк, который вы смотрите (см. Перемещение во времени).