$sessionStorage

Durante el viaje actual, guarde el estado temporal para la instancia actual del instrumento, como la velocidad máxima observada por el instrumento, los tiempos acumulados o el resultado del cálculo del cuadro anterior. Vacío después del viaje.

Ámbito del almacenamiento

"Sesión" aquí se refiere a Viaje actual. En el mismo viaje, el instrumento puede recuperar el valor previamente guardado al ejecutar main() varias veces, por lo que es adecuado para mantener estados entre cuadros, como valores máximos y contadores.

El almacenamiento pertenece a la instancia del instrumento actual al mismo tiempo: coloque dos instrumentos idénticos en la página y cada uno guardará su propio estado.

Cuándo conservar y cuándo borrar

Condición comportamiento de almacenamiento
El mismo viaje, la misma instancia de instrumento en funcionamiento continuo Reservado entre múltiples llamadas a main().
El viaje actual finaliza o la aplicación sale del estado de grabación Vacío. get devuelve null cuando no hay ningún disparo activo, set no retiene escrituras.
Comienza el próximo viaje Comienza desde el almacenamiento vacío y no hereda valores del apartado anterior.
El script del instrumento se recarga, la instancia de sorteo se destruye o la aplicación se reinicia Los valores temporales se pierden y no se restaurarán ni siquiera posteriormente durante el mismo viaje.
Vista previa del editor Utilice el almacenamiento de vista previa independiente y no escriba el itinerario real del vehículo; el valor de vista previa no se utilizará al cambiar a la ejecución real.

Guarda el estado observado y calculado durante el funcionamiento del instrumento. Si el instrumento se enciende a mitad de camino, el valor máximo del viaje antes de encenderse no se puede obtener automáticamente; Los datos que deben conservarse durante mucho tiempo no deben guardarse aquí únicamente.

Leer y escribir objetos y matrices.

Tanto get como set utilizan copias de datos. Por ejemplo, si saca una matriz y le agrega elementos, la matriz original almacenada no cambiará y deberá llamar a set nuevamente para guardar los cambios.

La clave debe ser una cadena. Puede contener números finitos, cadenas, valores booleanos, null y objetos y matrices ordinarios compuestos por estos valores. Las funciones, View, referencias circulares y objetos especiales no se pueden guardar. Después de configurar una clave en null, lea la clave para obtener null; la interfaz actual proporciona dos métodos, get y set.

Ejemplo: velocidad máxima observada durante este viaje

En Configuración de parámetros se definen dos entradas Datos básicos: la velocidad con identificador speed y el estado de grabación con identificador recording. Se muestra una línea horizontal cuando no hay ningún viaje activo; cada ejecución compara la velocidad actual con el valor máximo guardado y luego guarda el valor mayor. Los valores máximos se guardan en km/h y se convierten de acuerdo con la unidad actual cuando se muestran para evitar mezclar unidades.

En ausencia de una prueba, el valor máximo observado se conserva y el valor cero efectivo participa normalmente en el cálculo; el siguiente segmento del viaje comienza desde el valor nulo.

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

Límites de capacidad

Cada almacén tiene un máximo de 256 claves, con un tamaño total de datos de aproximadamente 1 MiB; una sola clave tiene un máximo de 256 UTF-8 bytes. También existen límites de tamaño y anidamiento para la copia de valores. Si se excede el límite o se pasa un valor no admitido, se informará un error y la escritura fallida no sobrescribirá el valor válido original.

Adecuado para guardar una pequeña cantidad de estado estadístico. Agregar la matriz cuadro por cuadro durante mucho tiempo seguirá creciendo. La curva debe usar $data.history primero o limitar la longitud de la matriz usted mismo.

método

get(key: string)unknown | null

Lee el valor guardado por esta instancia del instrumento durante el viaje actual. Devuelve null si la clave no existe; los objetos y las matrices se devuelven como copias independientes.

set(key: string, value: unknown)void

Guarda una copia del valor en la clave indicada o la sobrescribe. Las escrituras no se conservan cuando no hay un viaje en curso. Devuelve undefined.