$sessionStorage
현재 트립 중에 계측기가 관찰한 최대 속도, 누적 시간 또는 이전 프레임의 계산 결과와 같은 현재 계측기 인스턴스에 대한 임시 상태를 저장합니다. 여행이 끝난 후 비어 있습니다.
저장 범위
여기서 "세션"은 이번 주행을 의미합니다. 동일한 트립에서 기기는 main()을 여러 번 실행할 때 이전에 저장된 값을 검색할 수 있으므로 피크 값 및 카운터와 같은 크로스 프레임 상태를 유지하는 데 적합합니다.
저장소는 동시에 현재 계측기 인스턴스에 속합니다. 두 개의 동일한 계측기를 페이지에 배치하면 각 계측기는 자체 상태를 저장합니다.
보관할 때와 삭제할 때
| 상태 | 저장 동작 |
|---|---|
| 동일한 트립, 동일한 지속적으로 실행되는 계측기 인스턴스 | main()에 대한 여러 호출 사이에 예약되어 있습니다. |
| 현재 여행이 종료되거나 앱이 녹화 상태를 종료합니다. | 비어 있는. 활성 트립이 없으면 get은 null을 반환하고 set은 쓰기를 유지하지 않습니다. |
| 다음 여행을 시작하세요 | 빈 저장소에서 시작하며 이전 섹션의 값을 상속하지 않습니다. |
| 계측기 스크립트가 다시 로드되거나 그리기 인스턴스가 삭제되거나 앱이 다시 시작됩니다. | 임시 값은 손실되며 나중에 동일한 여행 중에도 복원되지 않습니다. |
| 편집기 미리보기 | 독립적인 미리보기 저장소를 사용하고 실제 차량 운행 일정을 작성하지 마세요. 실제 실행으로 전환할 때 미리보기 값은 사용되지 않습니다. |
기기 작동 중에 관찰되고 계산된 상태를 저장합니다. 기기를 중간에 켜면 켜기 전의 트립 최고값을 자동으로 얻을 수 없습니다. 오랫동안 보관해야 하는 데이터는 여기에만 저장하면 안 됩니다.
객체와 배열 읽기 및 쓰기
get 및 set은 모두 데이터 복사본을 사용합니다. 예를 들어 배열을 꺼내서 요소를 추가하면 저장소의 원래 배열은 변경되지 않으며 변경 사항을 저장하려면 set을 다시 호출해야 합니다.
키는 문자열이어야 합니다. 유한한 숫자, 문자열, 부울 값, null 및 이러한 값으로 구성된 일반 객체와 배열을 보유할 수 있습니다. 함수, View, 순환 참조 및 특수 개체는 저장할 수 없습니다. 키를 null로 설정한 후 키를 읽어 null을 얻습니다. 현재 인터페이스는 get 및 set의 두 가지 메서드를 제공합니다.
예: 이번 여행 중 관찰된 최고 속도
두 개의 기본 데이터 입력이 매개변수 설정에 정의되어 있습니다. 즉, 식별자가 speed인 속도와 식별자가 recording인 녹음 상태입니다. 활성 트립이 없으면 수평선이 표시됩니다. 각 실행은 현재 속도를 저장된 최고 값과 비교한 다음 더 큰 값을 저장합니다. 피크 값은 km/h에 저장되며 표시 시 단위가 혼합되는 것을 방지하기 위해 현재 단위에 따라 변환됩니다.
테스트가 없으면 관찰된 피크 값이 유지되고 유효 0 값은 정상적으로 계산에 참여합니다. 여정의 다음 세그먼트는 null 값에서 시작됩니다.
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>
);
}
용량 제한
각 저장소에는 최대 256개의 키가 있으며 총 데이터 크기는 약 1MiB입니다. 단일 키의 최대 크기는 256 UTF-8 바이트입니다. 값 복사에는 크기 및 중첩 제한도 있습니다. 제한을 초과하거나 지원되지 않는 값이 전달되면 오류가 보고되고 실패한 쓰기는 원래 유효한 값을 덮어쓰지 않습니다.
소량의 통계현황을 저장하는데 적합합니다. 오랫동안 배열을 프레임 단위로 추가하면 계속해서 늘어날 것입니다. 곡선은 $data.history을 먼저 사용하거나 배열 길이를 직접 제한해야 합니다.
방법
get(key: string)unknown | null현재 주행 중 이 계기 인스턴스가 저장한 값을 읽습니다. 키가 없으면 null을 반환하며, 객체와 배열은 독립된 복사본으로 반환합니다.
set(key: string, value: unknown)void값을 복사하여 지정된 키에 저장하거나 덮어씁니다. 진행 중인 주행이 없으면 쓰기 내용은 유지되지 않습니다. undefined를 반환합니다.