$sessionStorage

Durante a viagem atual, salve o estado temporário da instância atual do instrumento, como a velocidade máxima observada pelo instrumento, os tempos acumulados ou o resultado do cálculo do quadro anterior. Vazio após a viagem.

Escopo do armazenamento

"Sessão" aqui se refere a Viagem atual. Na mesma viagem, o instrumento pode recuperar o valor salvo anteriormente ao executar main() várias vezes, por isso é adequado para manter o status de quadro cruzado, como valores de pico e contadores.

O armazenamento pertence à instância atual do instrumento ao mesmo tempo: coloque dois instrumentos idênticos na página e cada um salva seu próprio estado.

Quando manter e quando limpar

Doença comportamento de armazenamento
O mesmo disparo, a mesma instância de instrumento em execução contínua Reservado entre várias chamadas para main().
A viagem atual termina ou o aplicativo sai do estado de gravação Vazio. get retorna nulo quando não há viagem em andamento, set não retém escritas.
Comece a próxima jornada Começa com um armazenamento vazio e não herda valores da seção anterior.
O script do instrumento é recarregado, a instância de desenho é destruída ou o aplicativo é reiniciado Os valores temporários são perdidos e não serão restaurados ainda mais tarde, durante a mesma viagem.
Visualização do editor Use armazenamento de visualização independente e não escreva o itinerário real do veículo; o valor de visualização não será usado ao mudar para a execução real.

Salva o status observado e calculado durante a operação do instrumento. Se o instrumento for ligado no meio do caminho, o valor de pico da viagem antes de ligar não poderá ser obtido automaticamente; dados que precisam ser retidos por muito tempo não devem ser salvos apenas aqui.

Lendo e escrevendo objetos e arrays

Tanto get quanto set usam cópias de dados. Por exemplo, se você retirar um array e adicionar elementos a ele, o array original armazenado não será alterado e você precisará chamar set novamente para salvar as alterações.

A chave deve ser uma string. Pode conter números finitos, strings, valores booleanos, null e objetos comuns e matrizes compostas por esses valores. Funções, View, referências circulares e objetos especiais não podem ser salvos. Depois de definir uma chave para null, leia a chave para obter null; a interface atual fornece dois métodos, get e set.

Exemplo: Velocidade máxima observada durante esta viagem

Duas entradas Dados básicos são definidas em Configuração de parâmetros: a velocidade com identificador speed e o status de gravação com identificador recording. Uma linha horizontal é exibida quando não há viagem ativa; cada execução compara a velocidade atual com o valor de pico salvo e, em seguida, salva o valor maior. Os valores de pico são salvos em km/h e convertidos de acordo com a unidade atual quando exibidos para evitar mistura de unidades.

Na ausência de teste, o valor de pico observado é retido, e o valor zero efetivo participa normalmente do cálculo; o próximo segmento da jornada começa no 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>
  );
}

Limites de capacidade

Cada armazenamento possui no máximo 256 chaves, com tamanho total de dados de aproximadamente 1 MiB; uma única chave tem no máximo 256 UTF-8 bytes. Existem também limites de tamanho e aninhamento na cópia de valores. Se o limite for excedido ou um valor não suportado for transmitido, um erro será relatado e a falha na gravação não substituirá o valor original válido.

Adequado para salvar uma pequena quantidade de status estatístico. Anexar a matriz quadro a quadro por um longo tempo continuará a crescer. A curva deve usar $data.history primeiro ou limitar você mesmo o comprimento do array.

método

get(key: string)unknown | null

Lê o valor salvo por esta instância do instrumento durante a viagem atual. Retorna null se a chave não existir; objetos e arrays são retornados como cópias independentes.

set(key: string, value: unknown)void

Salva uma cópia do valor na chave indicada ou a sobrescreve. As gravações não são mantidas quando não há uma viagem em andamento. Retorna undefined.