$sessionStorage

現在のトリップ中に、機器によって観測された最大速度、累積時間、前のフレームの計算結果など、現在の機器インスタンスの一時的な状態を保存します。旅行後は空っぽ。

保存範囲

ここでの「セッション」とは 今回の走行 を指します。同じトリップ内で、main() を複数回実行すると、以前に保存した値を取得できるため、ピーク値やカウンタなどのクロスフレームステータスを維持するのに適しています。

ストレージは同時に現在の機器インスタンスに属します。ページ上に 2 つの同一の機器を配置すると、それぞれが独自の状態を保存します。

いつ保管し、いつクリアするか

状態 保管動作
同じトリップ、同じ継続的に実行される機器インスタンス main() への複数の呼び出しの間で予約されています。
現在の旅行が終了するか、アプリが記録状態を終了します 空の。進行中の走行がない場合、get は null を返し、set は書き込みを保持しません。
次の旅を始めましょう 空のストレージから開始され、前のセクションから値を継承しません。
インストゥルメント スクリプトがリロードされるか、描画インスタンスが破棄されるか、アプリが再起動されます。 一時的な値は失われ、同じ旅行中に後でさえ復元されません。
エディターのプレビュー 独立したプレビュー ストレージを使用し、実際の車両の旅程を書き込まないでください。プレビュー値は、実際の実行に切り替えるときには使用されません。

機器の動作中に観察および計算されたステータスを保存します。途中で電源を投入した場合、電源投入前のトリップのピーク値は自動取得できません。長期間保存する必要があるデータは、ここだけに保存​​しないでください。

オブジェクトと配列の読み取りと書き込み

get と set は両方ともデータ コピーを使用します。たとえば、配列を取り出してそこに要素を追加した場合、ストレージ内の元の配列は変更されないため、変更を保存するには set を再度呼び出す必要があります。

キーは文字列である必要があります。有限の数値、文字列、ブール値、null、およびこれらの値で構成される通常のオブジェクトと配列を保持できます。関数、View、循環参照、特殊オブジェクトは保存できません。キーを null に設定した後、キーを読み取って null を取得します。現在のインターフェイスには、get と set という 2 つのメソッドが用意されています。

例: この旅行中に観測された最高速度

2 つの 基本データ 入力が パラメータ設定 で定義されています。速度は識別子 speed で、録音ステータスは識別子 recording です。アクティブなトリップがない場合は水平線が表示されます。実行ごとに現在の速度と保存されたピーク値が比較され、大きい方の値が保存されます。ピーク値はkm/hに保存され、単位の混在を避けるために表示時に現在の単位に応じて変換されます。

テストがない場合は、観察されたピーク値が保持され、通常は実効ゼロ値が計算に参加します。ジャーニーの次のセグメントは null 値から始まります。

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

容量制限

各ストアには最大 256 個のキーがあり、合計データ サイズは約 1 MiB です。 1 つのキーには最大 256 UTF-8 バイトがあります。値のコピーにはサイズとネストの制限もあります。制限を超えた場合、またはサポートされていない値が渡された場合、エラーが報告され、書き込みに失敗しても元の有効な値は上書きされません。

少量の統計ステータスを保存するのに適しています。長時間フレームごとに配列を追加すると、サイズは増大し続けます。曲線では最初に $data.history を使用するか、配列の長さを自分で制限する必要があります。

方法

get(key: string)unknown | null

現在の走行中に、この計器インスタンスが保存した値を読み取ります。キーが存在しない場合は null を返し、オブジェクトと配列は独立したコピーとして返します。

set(key: string, value: unknown)void

値のコピーを指定したキーに保存または上書きします。進行中の走行がない場合、書き込みは保持されません。戻り値は undefined です。