$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 | nullLegge 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)voidSalva una copia del valore nella chiave indicata o la sovrascrive. Le scritture non vengono conservate in assenza di un viaggio in corso. Restituisce undefined.