$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 | nullLê 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)voidSalva 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.