$sessionStorage
Pendant le trajet en cours, enregistrez l'état temporaire de l'instance actuelle de l'instrument, tel que la vitesse maximale observée par l'instrument, les temps accumulés ou le résultat du calcul de la trame précédente. Vide après le voyage.
Portée du stockage
« Session » fait référence ici à Trajet en cours. Au cours du même trajet, l'instrument peut récupérer la valeur précédemment enregistrée lors de l'exécution de main() plusieurs fois, il est donc adapté au maintien de l'état inter-images tel que les valeurs de crête et les compteurs.
Le stockage appartient en même temps à l'instance d'instrument actuelle : placez deux instruments identiques sur la page, et chacun enregistre son propre état.
Quand conserver et quand effacer
| Condition | comportement de stockage |
|---|---|
| Le même voyage, la même instance d'instrument fonctionnant en continu | Réservé entre plusieurs appels à main(). |
| Le voyage en cours se termine ou l'application quitte l'état d'enregistrement | Vide. get renvoie null lorsqu'il n'y a pas de trajet en cours, set ne conserve pas les écritures. |
| Commencez le prochain voyage | Commence à partir d'un stockage vide et n'hérite pas des valeurs de la section précédente. |
| Le script de l'instrument se recharge, l'instance de dessin est détruite ou l'application redémarre | Les valeurs temporaires sont perdues et ne seront pas restaurées même plus tard au cours du même trajet. |
| Aperçu de l'éditeur | Utilisez un stockage de prévisualisation indépendant et n'écrivez pas l'itinéraire réel du véhicule ; la valeur d'aperçu ne sera pas utilisée lors du passage à l'exécution réelle. |
Il enregistre l'état observé et calculé pendant le fonctionnement de l'instrument. Si l'instrument est allumé à mi-chemin, la valeur maximale du trajet avant l'allumage ne peut pas être obtenue automatiquement ; les données qui doivent être conservées pendant une longue période ne doivent pas être enregistrées uniquement ici.
Lire et écrire des objets et des tableaux
get et set utilisent des copies de données. Par exemple, si vous supprimez un tableau et y ajoutez des éléments, le tableau d'origine stocké ne changera pas et vous devrez appeler à nouveau set pour enregistrer les modifications.
La clé doit être une chaîne. Peut contenir des nombres finis, des chaînes, des valeurs booléennes, null et des objets et tableaux ordinaires composés de ces valeurs. Les fonctions, View, les références circulaires et les objets spéciaux ne peuvent pas être enregistrés. Après avoir défini une clé sur null, lisez la clé pour obtenir null ; l'interface actuelle propose deux méthodes, get et set.
Exemple : Vitesse maximale observée lors de ce trajet
Deux entrées Données de base sont définies dans Configuration des paramètres : la vitesse avec l'identifiant speed, et l'état d'enregistrement avec l'identifiant recording. Une ligne horizontale s'affiche lorsqu'il n'y a aucun trajet actif ; chaque exécution compare la vitesse actuelle avec la valeur maximale enregistrée, puis enregistre la valeur la plus élevée. Les valeurs maximales sont enregistrées dans km/h et converties en fonction de l'unité actuelle lorsqu'elles sont affichées pour éviter de mélanger les unités.
En l'absence de test, la valeur crête observée est conservée, et la valeur zéro effective participe normalement au calcul ; le segment suivant du voyage commence à partir de la valeur nulle.
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>
);
}
Limites de capacité
Chaque magasin dispose d'un maximum de 256 clés, avec une taille totale de données d'environ 1 MiB ; une seule clé a un maximum de 256 UTF-8 octets. Il existe également des limites de taille et d'imbrication pour la copie des valeurs. Si la limite est dépassée ou si une valeur non prise en charge est transmise, une erreur sera signalée et l'échec de l'écriture n'écrasera pas la valeur valide d'origine.
Convient pour enregistrer une petite quantité de statut statistique. L'ajout du tableau image par image pendant une longue période continuera de croître. La courbe doit d'abord utiliser $data.history, ou limiter vous-même la longueur du tableau.
méthode
get(key: string)unknown | nullLit la valeur enregistrée par cette instance d’instrument pendant le trajet en cours. Renvoie null si la clé n’existe pas ; les objets et les tableaux sont renvoyés sous forme de copies indépendantes.
set(key: string, value: unknown)voidEnregistre une copie de la valeur sous la clé indiquée ou la remplace. Aucune écriture n’est conservée en l’absence de trajet en cours. Renvoie undefined.