Storage Utilities
Named state가 저장되어 있는지 확인하고, 실제 storage와 저장 key 정보를 조회합니다.
hasRxState
name과 storage options를 지정해 해당 위치에 값이 존재하는지 boolean으로 확인합니다.
ts
const exists = await hasRxState("count", {
storage: "sessionstorage",
});
// booleanfindRxStateStorages
name만 전달하면 값이 확인된 실제 storage backend를 중복 없이 배열로 반환합니다. auto로 저장한 값도 결과에서는 실제 선택된 backend로 반환됩니다.
ts
const storages = await findRxStateStorages("count");
// RxStateResolvedStorage[]
// 예: ["indexeddb", "localstorage", "sessionstorage"]getRxStateStorageInfo
확인된 저장 위치를 항상 배열로 반환합니다. 같은 name이 여러 storage나 서로 다른 name/storeName/keyPrefix 설정에 존재하면 각각 별도 항목으로 반환됩니다. 두 번째 인자로 storage options를 넘기면 해당 조건으로 조회할 수 있습니다.
ts
const infos = await getRxStateStorageInfo("count");
const indexedDbInfos = await getRxStateStorageInfo("count", {
storage: "indexeddb",
});
// RxStateStorageInfo[]ts
interface RxStateStorageInfo {
key: string;
storageKey: string;
fullKey: string;
storage: RxStateResolvedStorage;
name: string;
storeName: string;
keyPrefix: string;
}storageKey는 storage에 전달되는 item key이고, fullKey는 localStorage처럼 flat key를 노출하는 backend에서 확인할 수 있는 전체 key입니다. storage에는 auto가 아니라 실제 backend가 반환됩니다.
실제 동작 테스트
아래 버튼으로 같은 테스트 key를 여러 storage에 실제 저장한 뒤 세 API의 반환값을 바로 확인할 수 있습니다.
테스트 값 저장
같은 name을 여러 storage에 저장한 뒤 세 유틸리티의 실제 반환값을 확인할 수 있습니다.
조회 storage
localstorage
아직 실행하지 않았습니다.
Reducer storage utilities
Reducer도 같은 방식으로 hasRxReducer, findRxReducerStorages, getRxReducerStorageInfo를 제공합니다.
ts
await hasRxReducer("cart", { storage: "sessionstorage" });
await findRxReducerStorages("cart");
await getRxReducerStorageInfo("cart");
await getRxReducerStorageInfo("cart", { storage: "indexeddb" });