$sessionStorage

Durante il viaggio corrente, salva lo stato temporaneo per l'istanza dello strumento corrente, come la velocità massima osservata dallo strumento, i tempi accumulati o il risultato del calcolo del frame precedente. Vuoto dopo il viaggio.

Ambito di archiviazione

"Sessione" qui si riferisce a Viaggio attuale. Nello stesso viaggio, lo strumento può recuperare il valore precedentemente salvato eseguendo più volte main(), quindi è adatto per mantenere lo stato cross-frame come valori di picco e contatori.

La memorizzazione appartiene contemporaneamente all'istanza dello strumento corrente: posiziona due strumenti identici sulla pagina e ognuno salva il proprio stato.

Quando conservare e quando eliminare

Condizione comportamento di archiviazione
Lo stesso viaggio, la stessa istanza dello strumento in continuo funzionamento Riservato tra più chiamate a main().
Il viaggio corrente termina o l'app esce dallo stato di registrazione Vuoto. get restituisce null quando non c'è alcun viaggio attivo, set non conserva le scritture.
Inizia il prossimo viaggio Inizia dalla memoria vuota e non eredita i valori dalla sezione precedente.
Lo script dello strumento si ricarica, l'istanza di disegno viene distrutta o l'app si riavvia I valori temporanei vengono persi e non verranno ripristinati nemmeno successivamente durante lo stesso viaggio.
Anteprima dell'editor Utilizza un archivio di anteprima indipendente e non scrivere l'itinerario effettivo del veicolo; il valore di anteprima non verrà utilizzato quando si passa all'esecuzione effettiva.

Salva lo stato osservato e calcolato durante il funzionamento dello strumento. Se lo strumento viene acceso a metà, non è possibile ottenere automaticamente il valore di picco del viaggio prima dell'accensione; i dati che devono essere conservati per lungo tempo non dovrebbero essere salvati solo qui.

Lettura e scrittura di oggetti e array

Sia get che set utilizzano copie di dati. Ad esempio, se si estrae un array e vi si aggiungono elementi, l'array originale in memoria non cambierà e sarà necessario richiamare nuovamente set per salvare le modifiche.

La chiave deve essere una stringa. Può contenere numeri finiti, stringhe, valori booleani, null e oggetti ordinari e matrici composti da questi valori. Non è possibile salvare funzioni, View, riferimenti circolari e oggetti speciali. Dopo aver impostato una chiave su null, leggi la chiave per ottenere null; l'interfaccia attuale fornisce due metodi, get e set.

Esempio: velocità massima osservata durante questo viaggio

In Configurazione dei parametri sono definiti due ingressi Dati di base: la velocità con identificatore speed e lo stato di registrazione con identificatore recording. Viene visualizzata una linea orizzontale quando non vi è alcun viaggio attivo; ogni corsa confronta la velocità corrente con il valore di picco salvato, quindi salva il valore più grande. I valori di picco vengono salvati in km/h e convertiti in base all'unità corrente quando visualizzati per evitare di mescolare le unità.

In assenza di un test, il valore di picco osservato viene mantenuto e il valore zero effettivo partecipa normalmente al calcolo; il segmento successivo del viaggio inizia dal valore nullo.

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

Limiti di capacità

Ogni archivio ha un massimo di 256 chiavi, con una dimensione totale dei dati di circa 1 MiB; una singola chiave ha un massimo di 256 UTF-8 byte. Esistono inoltre limiti di dimensione e annidamento per la copia dei valori. Se il limite viene superato o viene passato un valore non supportato, verrà segnalato un errore e la scrittura non riuscita non sovrascriverà il valore valido originale.

Adatto per salvare una piccola quantità di stato statistico. L'aggiunta dell'array fotogramma per fotogramma per un lungo periodo continuerà a crescere. La curva dovrebbe usare prima $data.history o limitare tu stesso la lunghezza dell'array.

metodo

get(key: string)unknown | null

Legge il valore salvato da questa istanza dello strumento durante il viaggio attuale. Restituisce null se la chiave non esiste; gli oggetti e gli array vengono restituiti come copie indipendenti.

set(key: string, value: unknown)void

Salva una copia del valore nella chiave indicata o la sovrascrive. Le scritture non vengono conservate in assenza di un viaggio in corso. Restituisce undefined.