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() должен быть завершен в рамках синхронного вызова. Избегайте непрерывных циклов, блокирующих ожиданий и неограниченно разрастающихся структур данных; среда выполнения будет ограничивать время выполнения, шаги и размер содержимого чертежа. Значения в атрибутах чертежа должны быть конечными числами, а результаты вычислений должны в первую очередь учитывать недостающие тесты, деление на ноль и т. д.

Ошибки сценария отображаются в статусе ошибок прибора и соответствующих журналах. Предварительный просмотр используется для проверки отображаемого кода; фактические показания счетчика зависят от выбранных данных и текущего источника данных.