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 を使用します。これはトリップと計測器インスタンスによって分離され、トリップが終了するか計測器がリロードされるとクリアされます。
リストが必要な場合は、配列 map から View を生成できます。更新またはリフローするアイテムに安定した key を提供し、描画の更新とアニメーションが引き続き同じアイテムに対応できるようにします。
動作要件とエラー
main() は同期呼び出し内で完了する必要があります。連続ループ、ブロック待機、無制限に増大するデータ構造を避けてください。ランタイムは、実行時間、ステップ、描画コンテンツのサイズを制限します。描画属性の値は有限の数値である必要があり、計算結果ではまずテストの欠落、ゼロによる除算などに対処する必要があります。
スクリプト エラーは、機器エラー ステータスと対応するログに表示されます。プレビューは表示コードを確認するために使用されます。実際のメーターの読み取り値は、選択したデータと現在のデータ ソースによって異なります。