色彩模式
添加暗模式和其他色彩模式。
若要为应用添加色彩模式,请先在 `theme.js` 中定义色彩模式代码。
theme.jsexport 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><buttononClick={(e) => {setColorMode(colorMode === "default" ? "dark" : "default")}}>Toggle {colorMode === "default" ? "Dark" : "Light"}</button></header>)}
prefers-color-scheme
若要根据 prefers-color-scheme 媒体查询初始化色彩模式,请将 useColorSchemeMediaQuery 标志添加到你的主题。
theme.jsmodule.exports = {useColorSchemeMediaQuery: true,colors: {text: "#111",background: "#fff",primary: "#06f",modes: {dark: {text: "#ededee",background: "#1a202c",primary: "#fb3640",},},},}