useSessionStorage
輕鬆管理 sessionStorage
useSessionStorage 提供響應式的 sessionStorage 讀寫。它回傳一個元組,包含當前儲存的值和一個更新函式。與 localStorage 不同,sessionStorage 的資料只在當前工作階段(分頁)中持久化,關閉分頁後會被清除。
使用場景
- 儲存僅在當前瀏覽工作階段中需要的臨時資料
- 持久化表單狀態以在頁面內導航時保留(但關閉分頁後不保留)
- 儲存敏感的暫時資料,不希望在關閉分頁後持久化
注意事項
- SSR 安全:在伺服器端渲染時回傳預設值。伺服器上不會存取
sessionStorage。 - 工作階段範圍:資料僅在當前分頁的生命週期內持久化。不同分頁之間不共享。
- 相關 hooks:另請參閱
useLocalStorage用於跨工作階段的持久化,以及useCookie用於 cookie 儲存。
Usage
Live Editor
function Demo() { const [value, setValue] = useSessionStorage("my-key", "key"); return ( <div> <div>值: {value}</div> <button onClick={() => setValue("bar")}>設置為bar</button> <button onClick={() => setValue("baz")}>設置為baz</button> <button onClick={() => setValue(null)}>移除</button> </div> ); };
Result
API
useSessionStorage
Returns
readonly [T | null, React.Dispatch<React.SetStateAction<T | null>>]: 包含以下元素的元組:
- sessionStorage 的當前值。
- 更新 sessionStorage 值的函數。
Arguments
| 參數名 | 描述 | 類型 | 預設值 |
|---|---|---|---|
| key | 键值 | string (必填) | - |
| defaultValue | 默认值 | T | undefined | - |
| options | 可选参数 | UseSessionStorageOptions<T> | undefined | - |
UseSessionStorageOptions
| 參數名 | 描述 | 類型 | 預設值 |
|---|---|---|---|
| serializer | 自定义数据序列化 | UseSessionStorageSerializer<T> | - |
| onError | 错误回调 | (error: unknown) => void | console.error |
| effectStorageValue | 首次挂载时没有数据时设置到 storage, 已弃用 | T | (() => T) | - |
| mountStorageValue | 首次挂载时没有数据时设置到 storage | T | (() => T) | - |
| listenToStorageChanges | 监听 storage 变化 | boolean | true |
UseSessionStorageSerializer
| 參數名 | 描述 | 類型 | 預設值 |
|---|---|---|---|
| read | 自定义数据读取 | (raw: string) => T (必填) | - |
| write | 自定义数据写入 | (value: T) => string (必填) | - |