$sessionStorage

Selama perjalanan saat ini, simpan status sementara untuk contoh instrumen saat ini, seperti kecepatan maksimum yang diamati oleh instrumen, akumulasi waktu, atau hasil perhitungan frame sebelumnya. Kosong setelah perjalanan.

Cakupan penyimpanan

"Sesi" di sini mengacu pada Perjalanan ini. Dalam perjalanan yang sama, instrumen dapat mengambil nilai yang disimpan sebelumnya saat mengeksekusi main() beberapa kali, sehingga cocok untuk mempertahankan status lintas bingkai seperti nilai puncak dan penghitung.

Penyimpanan tersebut menjadi milik instance instrumen saat ini pada saat yang sama: tempatkan dua instrumen identik pada halaman, dan masing-masing menyimpan statusnya sendiri.

Kapan harus disimpan dan kapan harus dibersihkan

Kondisi perilaku penyimpanan
Perjalanan yang sama, contoh instrumen yang terus berjalan Dicadangkan antara beberapa panggilan ke main().
Perjalanan saat ini berakhir, atau aplikasi keluar dari status perekaman Kosong. get mengembalikan null ketika tidak ada perjalanan aktif, set tidak menyimpan penulisan.
Mulailah perjalanan berikutnya Dimulai dari penyimpanan kosong dan tidak mewarisi nilai dari bagian sebelumnya.
Skrip instrumen dimuat ulang, instance draw dimusnahkan, atau aplikasi dimulai ulang Nilai sementara hilang dan tidak akan dikembalikan lagi pada perjalanan yang sama.
Pratinjau editor Gunakan penyimpanan pratinjau independen dan jangan menulis rencana perjalanan kendaraan yang sebenarnya; nilai pratinjau tidak akan digunakan saat beralih ke pengoperasian sebenarnya.

Ini menyimpan status yang diamati dan dihitung selama pengoperasian instrumen. Jika instrumen dihidupkan di tengah jalan, nilai puncak perjalanan sebelum dihidupkan tidak dapat diperoleh secara otomatis; data yang perlu disimpan dalam waktu lama sebaiknya tidak disimpan di sini saja.

Membaca dan menulis objek dan array

Baik get dan set menggunakan salinan data. Misalnya, jika Anda mengeluarkan sebuah array dan menambahkan elemen ke dalamnya, array asli di penyimpanan tidak akan berubah, dan Anda perlu memanggil set lagi untuk menyimpan perubahan.

Kunci harus berupa string. Dapat menampung angka terbatas, string, nilai Boolean, null, serta objek dan array biasa yang terdiri dari nilai-nilai ini. Fungsi, View, referensi melingkar, dan objek khusus tidak dapat disimpan. Setelah menyetel kunci ke null, baca kunci untuk mendapatkan null; antarmuka saat ini menyediakan dua metode, get dan set.

Contoh: Kecepatan tertinggi yang diamati selama perjalanan ini

Dua input Data dasar ditentukan di Konfigurasi parameter: kecepatan dengan pengidentifikasi speed, dan status perekaman dengan pengidentifikasi recording. Garis horizontal ditampilkan ketika tidak ada perjalanan aktif; setiap putaran membandingkan kecepatan saat ini dengan nilai puncak yang disimpan, lalu menyimpan nilai yang lebih besar. Nilai puncak disimpan dalam km/h dan dikonversi sesuai dengan unit saat ini saat ditampilkan untuk menghindari pencampuran unit.

Jika tidak ada pengujian, nilai puncak yang diamati dipertahankan, dan nilai nol efektif ikut serta dalam penghitungan secara normal; segmen perjalanan berikutnya dimulai dari nilai nol.

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>
  );
}

Batas kapasitas

Setiap penyimpanan memiliki maksimal 256 kunci, dengan total ukuran data sekitar 1 MiB; satu kunci memiliki maksimum 256 UTF-8 byte. Ada juga batasan ukuran dan penumpukan pada penyalinan nilai. Jika batas terlampaui atau nilai yang tidak didukung diteruskan, kesalahan akan dilaporkan, dan penulisan yang gagal tidak akan menimpa nilai asli yang valid.

Cocok untuk menyimpan sejumlah kecil status statistik. Menambahkan array frame demi frame untuk waktu yang lama akan terus bertambah. Kurva harus menggunakan $data.history terlebih dahulu, atau membatasi sendiri panjang array.

metode

get(key: string)unknown | null

Membaca nilai yang disimpan oleh instans instrumen ini selama perjalanan saat ini. Mengembalikan null jika kunci tidak ada; objek dan array dikembalikan sebagai salinan terpisah.

set(key: string, value: unknown)void

Menyimpan salinan nilai pada kunci yang ditentukan atau menimpanya. Penulisan tidak disimpan jika tidak ada perjalanan yang sedang berlangsung. Mengembalikan undefined.