main()
Запись чертежа сценария инструмента. CapDrive вызывает main() для получения этого экрана и отвечает за макет, рисование и последующее обновление.
Процесс исполнения
Каждый раз, когда он принимает новый ввод, CapDrive обновляет текущие данные и среду отображения, выполняет весь файл в новой локальной области, а затем вызывает main(), определенный на этот раз. Функция синхронно возвращает встроенный массив View, View или пустой контент.
Выборки и вычисления верхнего уровня также обновляются при каждом выполнении. Обычные переменные каждый раз повторно инициализируются, а $sessionStorage используется для состояния диапазона.
Изменения в текущем вводе, определении ввода или среде отображения инициируют выполнение, и единой фиксированной частоты не существует. Идентичные входные данные пропускаются, и в обработке остаются только самые последние ожидающие входные данные. Увеличение окна истории, очистка и внутренние изменения времени выборки не запускают выполнение по отдельности; явно определенные изменения ввода времени по-прежнему срабатывают. Анимация выполняется самостоятельно рисующей стороной.
Пример: отрисовка по текущим показаниям
Выберите скорость в настройках счетчика. Каждый вызов считывает последнюю скорость, генерирует числа и единицы измерения; отображает горизонтальную линию, когда скорость недоступна.
function main() {
const speed = $data.current.speed;
return (
<VStack spacing={8}>
<Text fontSize={64} color={$env.foreground}>
{speed?.value == null ? '—' : Math.round(speed.value)}
</Text>
<Text fontSize={16} color={$env.accent}>
{speed?.unit ?? $env.speedUnit}
</Text>
</VStack>
);
}
Состояние между вызовами функции
Обычные локальные переменные используются только для этого вызова функции. Используйте $sessionStorage, когда вам нужно сохранить пиковое значение, счетчик и т. д. статус в рамках текущей поездки; он изолирован отключением и экземпляром прибора и будет очищен после завершения отключения или перезагрузки прибора.
Если необходим список, View можно создать из массива map. Предоставляет стабильный key для элементов, которые обновляются или перекомпоновываются, чтобы обновления отрисовки и анимация продолжали соответствовать одному и тому же элементу.
Эксплуатационные требования и ошибки
main() должен быть завершен в рамках синхронного вызова. Избегайте непрерывных циклов, блокирующих ожиданий и неограниченно разрастающихся структур данных; среда выполнения будет ограничивать время выполнения, шаги и размер содержимого чертежа. Значения в атрибутах чертежа должны быть конечными числами, а результаты вычислений должны в первую очередь учитывать недостающие тесты, деление на ноль и т. д.
Ошибки сценария отображаются в статусе ошибок прибора и соответствующих журналах. Предварительный просмотр используется для проверки отображаемого кода; фактические показания счетчика зависят от выбранных данных и текущего источника данных.