Reflexjs
文档区块库指南GitHub
/
,

色彩模式

添加暗模式和其他色彩模式。


若要为应用添加色彩模式,请先在 `theme.js` 中定义色彩模式代码。

theme.js
export default {
colors: {
text: "#111",
background: "#fff",
primary: "#06f",
modes: {
dark: {
text: "#ededee",
background: "#1a202c",
primary: "#fb3640",
},
},
},
}

上述示例将具有两种模式:`default` 和 `dark`。

用法

在使用 `ThemeProvider` 时,色彩会自动应用。

// Default: `background-color: #06f`
// Dark: `background-color: #fb3640`
<button bg="primary>Primary</button

你还可以使用样式道具中的回调来访问色彩。

<button text={(theme) => theme.colors.dark.primary}>Button</button>

设置色彩模式

在你的应用中使用 `useColorMode` 钩子来访问当前色彩模式或更改色彩模式。

此值存储在 `localStorage` 中并在加载页面时使用,前提是 `useLocalStorage` `useRootStyles` 标志已设为 `true`。

import React from "react"
import { useColorMode } from "reflexjs"
export default function () {
const [colorMode, setColorMode] = useColorMode()
return (
<header>
<button
onClick={(e) => {
setColorMode(colorMode === "default" ? "dark" : "default")
}}
>
Toggle {colorMode === "default" ? "Dark" : "Light"}
</button>
</header>
)
}

prefers-color-scheme

若要根据 prefers-color-scheme 媒体查询初始化色彩模式,请将 useColorSchemeMediaQuery 标志添加到你的主题。

theme.js
module.exports = {
useColorSchemeMediaQuery: true,
colors: {
text: "#111",
background: "#fff",
primary: "#06f",
modes: {
dark: {
text: "#ededee",
background: "#1a202c",
primary: "#fb3640",
},
},
},
}
全局样式sx 道具

© 2022 Reflexjs

文档区块库指南GitHub