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 ? "深色" : "浅色"}</div> <br /> <div> <button onClick={toggleDark}>切换深色模式</button> </div> </div> ); };
结果
主题: 浅色
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 (必填) | - |