useDarkMode
具有自動數據持久性的深色模式。
⚠️ v6.1.0 破壞性變更
存儲格式已從布爾值更改為字符串值。 如果你正在从旧版本升级:
- 旧格式:
true/false布尔值 - 新格式:
"dark"/"light"字符串值 - 自动迁移: 现有数据将自动迁移
- SSR 脚本: 需要更新以處理字符串比较
Details
Tips
点击展开
Usage
即時編輯器
function Demo() { const [theme, toggleDark] = useDarkMode({ classNameDark: "dark", classNameLight: "light", defaultValue: false, }); return ( <div> <div>theme: {theme ? "dark" : "light"}</div> <br /> <div> <button onClick={toggleDark}>toggleDark</button> </div> </div> ); };
結果
theme: light
API
UseDarkOptions
| 參數名 | 描述 | 類型 | 預設值 |
|---|---|---|---|
| selector | 适用于目标元素的 CSS 选择器 | string | 'html' |
| attribute | 应用到目标元素的 html 属性 | string | 'class' |
| defaultValue | 默认值 | boolean | false |
| storageKey | 将数据持久保存到 localStorage/sessionStorage 的键值 | string | 'reactuses-color-scheme' |
| storage | 存储对象,可以是localStorage或sessionStorage | () => Storage | localStorage |
| classNameDark | 应用到目标元素上黑色类名称 | string (必填) | - |
| classNameLight | 应用到目标元素上的亮色类名称 | string (必填) | - |
useDarkMode
Returns
readonly [boolean | null, () => void, React.Dispatch<React.SetStateAction<boolean | null>>]: 包含以下元素的元組:
- 黑暗狀態的當前值。
- 切換黑暗狀態的功能。
- 更新黑暗狀態的功能。
Arguments
| 參數名 | 描述 | 類型 | 預設值 |
|---|---|---|---|
| options | - | UseDarkOptions (必填) | - |