Руководство пользователя
Данные и привязки
Схема, синтаксис привязок, перебор массивов и откуда виджет берёт данные.
🔗 Данные и привязки
Разметка виджета не статична: текст, изображения и кнопки привязаны к данным. Структуру данных задаёт схема, а значения передаёт агент или ваш API.
📐 Схема
Схема — это контракт в формате JSON Schema. Она управляет тремя вещами:
- какие поля агент заполняет для функции
Показать виджет; - какие пути подсказываются при написании кода;
- проверкой данных (обязательные поля, типы,
enum).
{
"type": "object",
"properties": {
"customer": { "type": "string" },
"orders": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": { "type": "string" },
"total": { "type": "number" },
"status": { "type": "string", "enum": ["new", "shipping", "done"] }
}
}
}
},
"required": ["orders"]
}🧷 Синтаксис привязки
В JSX привязка — обычное выражение, в сохранённом дереве — путь в двойных фигурных скобках:
value={customer}→"{{customer}}"value={order.total}→"{{order.total}}"— путь через точку.label={orders[0].status}— обращение по индексу.value={orders.length}— длина массива.
Если свойство состоит только из привязки, сохраняется тип значения (массив остаётся массивом). При смешивании с текстом результат становится строкой:
<Title value={order.title} /> → "{{order.title}}"
<Text value={"$" + order.total} /> → "${{order.total}}"🔁 Перебор массивов
Списки пишутся через .map() и превращаются в узел Repeat:
<Card gap={2}>
{orders.map(order => (
<Row align="center" gap={2}>
<Text value={order.title} />
<Spacer />
<Badge label={order.status} />
</Row>
))}
</Card>- Элемент доступен под выбранным именем —
order. - Позиция элемента —
orderIndex(имя элемента +Index). - Чтобы вернуть несколько узлов, используйте
<>…</>.
🧮 Откуда берутся данные
ответ API > данные функции (действия) > пример Default > пустые значения из схемы- При действии
Показать виджетданные заполняет агент по схеме. - При
Вызов API + виджетданные берутся из ответа эндпоинта и при необходимости перекладываются через сопоставление ответа. - Поля формы (
Input,Select…) пишут в те же данные по ключуname. - Функция
set_variablesтоже меняет эти данные — только в браузере.
⚠️ Важно знать
- Отсутствующий путь отображается пустым — виджет не ломается.
- Default не перекрывает живые данные; он нужен только редактору.
- Введённое посетителем остаётся в браузере. Чтобы отправить это на сервер, добавьте поле в дополнительные входы функции.