$sessionStorage

Speichern Sie während der aktuellen Fahrt den temporären Status für die aktuelle Instrumenteninstanz, z. B. die vom Instrument beobachtete Höchstgeschwindigkeit, akkumulierte Zeiten oder das Berechnungsergebnis des vorherigen Frames. Nach der Reise leer.

Geltungsbereich des Speichers

„Sitzung“ bezieht sich hier auf Aktuelle Fahrt. Während der gleichen Fahrt kann das Instrument den zuvor gespeicherten Wert abrufen, wenn main() mehrmals ausgeführt wird, sodass es für die Aufrechterhaltung rahmenübergreifender Status wie Spitzenwerte und Zähler geeignet ist.

Der Speicher gehört gleichzeitig zur aktuellen Instrumenteninstanz: Platzieren Sie zwei identische Instrumente auf der Seite, und jedes speichert seinen eigenen Status.

Wann aufbewahren und wann löschen

Zustand Speicherverhalten
Dieselbe Fahrt, dieselbe kontinuierlich laufende Instrumenteninstanz Reserviert zwischen mehreren Aufrufen von main().
Die aktuelle Fahrt endet oder die App verlässt den Aufzeichnungsstatus Leer. get gibt null zurück, wenn keine laufende Fahrt vorliegt, set behält keine Schreibvorgänge bei.
Starten Sie die nächste Reise Beginnt mit leerem Speicher und erbt keine Werte aus dem vorherigen Abschnitt.
Das Instrumentskript wird neu geladen, die Zeicheninstanz wird zerstört oder die App wird neu gestartet Temporäre Werte gehen verloren und werden auch später während derselben Fahrt nicht wiederhergestellt.
Editor-Vorschau Verwenden Sie einen unabhängigen Vorschauspeicher und schreiben Sie nicht die tatsächliche Fahrzeugroute. Der Vorschauwert wird beim Umschalten auf den tatsächlichen Betrieb nicht verwendet.

Es speichert den während des Betriebs des Instruments beobachteten und berechneten Status. Wenn das Instrument mittendrin eingeschaltet wird, kann der Spitzenwert der Fahrt vor dem Einschalten nicht automatisch ermittelt werden; Daten, die über einen längeren Zeitraum aufbewahrt werden müssen, sollten nicht nur hier gespeichert werden.

Lesen und Schreiben von Objekten und Arrays

Sowohl get als auch set verwenden Datenkopien. Wenn Sie beispielsweise ein Array herausnehmen und ihm Elemente hinzufügen, ändert sich das ursprüngliche Array im Speicher nicht und Sie müssen set erneut aufrufen, um die Änderungen zu speichern.

Der Schlüssel muss eine Zeichenfolge sein. Kann endliche Zahlen, Zeichenfolgen, boolesche Werte, null und gewöhnliche Objekte und Arrays enthalten, die aus diesen Werten bestehen. Funktionen, View, Zirkelverweise und spezielle Objekte können nicht gespeichert werden. Nachdem Sie einen Schlüssel auf null gesetzt haben, lesen Sie den Schlüssel, um null zu erhalten. Die aktuelle Schnittstelle bietet zwei Methoden: get und set.

Beispiel: Während dieser Fahrt beobachtete Höchstgeschwindigkeit

In Parameterkonfiguration sind zwei Basisdaten-Eingänge definiert: die Geschwindigkeit mit der Kennung speed und der Aufnahmestatus mit der Kennung recording. Wenn keine aktive Fahrt vorliegt, wird eine horizontale Linie angezeigt. Bei jedem Lauf wird die aktuelle Geschwindigkeit mit dem gespeicherten Spitzenwert verglichen und dann der größere Wert gespeichert. Spitzenwerte werden in km/h gespeichert und bei der Anzeige entsprechend der aktuellen Einheit umgerechnet, um eine Vermischung der Einheiten zu vermeiden.

Ohne einen Test wird der beobachtete Spitzenwert beibehalten und der effektive Nullwert geht normal in die Berechnung ein; Der nächste Abschnitt der Reise beginnt mit dem Nullwert.

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

Kapazitätsgrenzen

Jeder Speicher verfügt über maximal 256 Schlüssel mit einer Gesamtdatengröße von etwa 1 MiB; Ein einzelner Schlüssel hat maximal 256 UTF-8 Bytes. Beim Kopieren von Werten gelten außerdem Größen- und Verschachtelungsbeschränkungen. Wenn der Grenzwert überschritten wird oder ein nicht unterstützter Wert übergeben wird, wird ein Fehler gemeldet und ein fehlgeschlagener Schreibvorgang überschreibt den ursprünglich gültigen Wert nicht.

Geeignet zum Speichern einer kleinen Menge statistischer Status. Das Anhängen des Arrays Frame für Frame wird über einen längeren Zeitraum hinweg weiter zunehmen. Die Kurve sollte zuerst $data.history verwenden oder die Array-Länge selbst begrenzen.

Verfahren

get(key: string)unknown | null

Liest den Wert, den diese Instrumentinstanz während der aktuellen Fahrt gespeichert hat. Gibt null zurück, wenn der Schlüssel nicht existiert; Objekte und Arrays werden als unabhängige Kopien zurückgegeben.

set(key: string, value: unknown)void

Speichert eine Kopie des Werts unter dem angegebenen Schlüssel oder überschreibt ihn. Ohne laufende Fahrt werden Schreibvorgänge nicht beibehalten. Gibt undefined zurück.