$sessionStorage
Geçerli yolculuk sırasında, geçerli alet örneği için alet tarafından gözlemlenen maksimum hız, toplam süreler veya önceki çerçevenin hesaplama sonucu gibi geçici durumu kaydedin. Yolculuktan sonra boş.
Depolama kapsamı
Buradaki "Oturum" Mevcut yolculuk anlamına gelir. Aynı yolculukta cihaz, main() birden çok kez çalıştırıldığında önceden kaydedilen değeri alabilir, bu nedenle tepe değerleri ve sayaçlar gibi çerçeveler arası durumu korumak için uygundur.
Depolama aynı anda mevcut cihaz örneğine aittir: sayfaya iki özdeş cihaz yerleştirin ve her biri kendi durumunu kaydeder.
Ne zaman saklanmalı ve ne zaman temizlenmeli
| Durum | depolama davranışı |
|---|---|
| Aynı yolculuk, sürekli çalışan aynı cihaz örneği | main()'ye yapılan birden fazla çağrı arasında ayrılmıştır. |
| Geçerli gezi sona erer veya uygulama kayıt durumundan çıkar | Boş. get devam eden bir yolculuk olmadığında null değerini döndürür, set yazma işlemlerini korumaz. |
| Bir sonraki yolculuğa başlayın | Boş depolama alanından başlar ve önceki bölümdeki değerleri devralmaz. |
| Araç betiği yeniden yüklenir, çizim örneği yok edilir veya uygulama yeniden başlatılır | Geçici değerler kaybolur ve aynı yolculuk sırasında daha sonra bile geri getirilemez. |
| Düzenleyici önizlemesi | Bağımsız önizleme depolamayı kullanın ve gerçek araç seyahat planını yazmayın; gerçek çalışmaya geçilirken önizleme değeri kullanılmayacaktır. |
Cihazın çalışması sırasında gözlemlenen ve hesaplanan durumu kaydeder. Cihaz yarı yolda açılırsa açılmadan önceki yolculuğun tepe değeri otomatik olarak elde edilemez; Uzun süre saklanması gereken veriler yalnızca buraya kaydedilmemelidir.
Nesneleri ve dizileri okuma ve yazma
Hem get hem de set veri kopyalarını kullanır. Örneğin, bir diziyi çıkarıp ona öğeler eklerseniz, depodaki orijinal dizi değişmeyecektir ve değişiklikleri kaydetmek için set'yi tekrar çağırmanız gerekir.
Anahtar bir dize olmalıdır. Sonlu sayıları, dizeleri, Boole değerlerini, null ve bu değerlerden oluşan sıradan nesneleri ve dizileri tutabilir. Fonksiyonlar, View, döngüsel referanslar ve özel nesneler kaydedilemez. Bir anahtarı null olarak ayarladıktan sonra, null değerini almak için anahtarı okuyun; geçerli arayüz iki yöntem sağlar: get ve set.
Örnek: Bu yolculuk sırasında gözlemlenen en yüksek hız
Parametre yapılandırması'de iki Temel veriler girişi tanımlanmıştır: speed tanımlayıcıyla hız ve recording tanımlayıcıyla kayıt durumu. Aktif bir açma olmadığında yatay bir çizgi görüntülenir; her çalıştırmada mevcut hız, kayıtlı en yüksek değerle karşılaştırılır ve ardından daha büyük olan değer kaydedilir. Tepe değerleri km/h içine kaydedilir ve birimlerin karışmasını önlemek için görüntülendiğinde mevcut birime göre dönüştürülür.
Bir testin yokluğunda gözlemlenen tepe değeri korunur ve etkin sıfır değeri hesaplamaya normal şekilde katılır; yolculuğun bir sonraki bölümü boş değerden başlar.
function main() {
if ($data.current.recording !== true) {
return (
<Text fontSize={48} color={$env.foreground}>
—
</Text>
);
}
const speed = $data.current.speed;
const saved = $sessionStorage.get('peakKmh');
let peak = typeof saved === 'number' ? saved : null;
if (typeof speed?.value === 'number') {
const kmh = speed.unit === 'mph' ? speed.value * 1.609344 : speed.value;
peak = peak == null ? kmh : Math.max(peak, kmh);
$sessionStorage.set('peakKmh', peak);
}
const unit = speed?.unit ?? $env.speedUnit;
const value =
peak == null ? '—' : Math.round(unit === 'mph' ? peak / 1.609344 : peak);
return (
<VStack spacing={6}>
<Text fontSize={48} color={$env.foreground}>
{value}
</Text>
<Text color={$env.accent}>{unit}</Text>
</VStack>
);
}
Kapasite sınırları
Her depoda toplam veri boyutu yaklaşık 1 MiB olan maksimum 256 anahtar bulunur; tek bir anahtar maksimum 256 UTF-8 bayta sahiptir. Değerlerin kopyalanmasında da boyut ve iç içe geçme sınırları vardır. Sınır aşılırsa veya desteklenmeyen bir değer girilirse bir hata raporlanır ve başarısız yazma, orijinal geçerli değerin üzerine yazılmaz.
Az miktarda istatistiksel durumu kaydetmek için uygundur. Diziyi kare kare ekleyerek uzun süre büyümeye devam edecektir. Eğri önce $data.history kullanmalı veya dizi uzunluğunu kendiniz sınırlamalıdır.
yöntem
get(key: string)unknown | nullBu gösterge örneğinin mevcut yolculukta kaydettiği değeri okur. Anahtar yoksa null döndürür; nesneler ve diziler bağımsız kopyalar olarak döndürülür.
set(key: string, value: unknown)voidDeğerin bir kopyasını belirtilen anahtara kaydeder veya üzerine yazar. Devam eden bir yolculuk yoksa yazılan değerler saklanmaz. undefined döndürür.