main()
Enstrüman komut dosyasının çizim girişi. CapDrive bu ekranı elde etmek için main()'yi çağırır ve düzen, çizim ve sonraki yenilemeden sorumludur.
Yürütme süreci
CapDrive her yeni girişi kabul ettiğinde mevcut verileri ve görüntüleme ortamını günceller, tüm dosyayı yeni yerel kapsamda yürütür ve ardından bu kez tanımlanan main() öğesini çağırır. İşlev, yerleşik View, View dizisini veya boş içeriği eşzamanlı olarak döndürür.
Üst düzey getirmeler ve hesaplamalar da her yürütmede güncellenir. Sıradan değişkenler her seferinde yeniden başlatılır ve yayılma durumu için $sessionStorage kullanılır.
Geçerli girişteki, giriş tanımındaki veya görüntüleme ortamındaki değişiklikler yürütmeyi tetikler ve sabit bir frekans yoktur. Aynı girişler atlanır ve yalnızca en son bekleyen girişler işlenmeye devam edilir. Geçmiş penceresinin büyümesi, temizlenmesi ve dahili örnekleme zamanı değişiklikleri, yürütmeyi ayrı ayrı tetiklemez; açıkça tanımlanmış zaman girişi değişiklikleri yine de tetiklenir. Animasyon çizim tarafı tarafından bağımsız olarak gerçekleştirilir.
Örnek: Güncel ölçümlerle çizim
Sayaç ayarlarında hızı seçin. Her çağrı en son hızı okur, sayılar ve birimler üretir; Hız mevcut olmadığında yatay bir çizgi görüntüler.
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>
);
}
Fonksiyon çağrıları arasındaki durum
Sıradan yerel değişkenler yalnızca bu işlev çağrısı için kullanılır. Geçerli yolculuk içindeki tepe değeri, sayım vb. durumunu korumanız gerektiğinde $sessionStorage kullanın; açma ve cihaz örneği tarafından izole edilir ve açma sona erdiğinde veya cihaz yeniden yüklendiğinde temizlenecektir.
Bir listeye ihtiyaç duyulduğunda, map dizisinden View oluşturulabilir. Çizim güncellemeleri ve animasyonların aynı öğeye karşılık gelmeye devam etmesi için güncellenen veya yeniden akıtılan öğeler için kararlı bir key sağlar.
Operasyonel gereksinimler ve hatalar
main() senkronize bir çağrı içerisinde tamamlanmalıdır. Sürekli döngülerden, engelleyici beklemelerden ve sınırsız büyüyen veri yapılarından kaçının; çalışma zamanı yürütme süresini, adımları ve çizim içeriği boyutunu sınırlayacaktır. Çizim niteliklerindeki değerlerin sonlu sayılar olması gerekir ve hesaplama sonuçları öncelikle eksik ölçümler, sıfıra bölme vb. ile ilgilenmelidir.
Komut dosyası hataları, cihaz hatası durumunda ve ilgili günlüklerde görüntülenir. Önizleme, ekran kodunu doğrulamak için kullanılır; gerçek sayaç okumaları seçilen verilere ve mevcut veri kaynağına bağlıdır.