配置主题颜色
ConfigProvider
为Ant Design组件提供统一的配置支持。从5.0版本开始,增加了对原色、边框半径、边框颜色等主题的支持,可以动态切换主题、支持多个主题、为部分组件自定义主题变量等等。
在 ConfigProvider
中配置主题
//App.tsx
import {Button, ConfigProvider, Space} from "antd";
function App() {
return (
<div style={{ background: 'white', height: 'calc(100vh - 40px)', padding: '20px' }}>
<ConfigProvider theme={{token:{colorPrimary:'#00b96b'}
}}>
<Space wrap>
<Button type="primary">Primary Button</Button>
<Button>Default Button</Button>
<Button type="dashed">Dashed Button</Button>
<Button type="text">Text Button</Button>
<Button type="link">Link Button</Button>
</Space>
</ConfigProvider>
</div>
)
}
export default App
在 ConfigProvider
设置暗模式
通过修改算法可以快速生成风格迥异的主题,5.0 版本中默认提供三套预设算法,分别是默认算法 theme.defaultAlgorithm
、暗色算法 theme.darkAlgorithm
和紧凑算法 theme.compactAlgorithm
。
我们将背景设置为黑色,将主题算法设置为theme.darkAlgorithm
。
import {Button, ConfigProvider, Space, theme} from "antd";
function App() {
return (
<div style={{ background: 'black', height: 'calc(100vh - 40px)', padding: '20px' }}>
<ConfigProvider theme={{algorithm:theme.darkAlgorithm}}>
<Space wrap>
<Button type="primary">Primary Button</Button>
<Button>Default Button</Button>
<Button type="dashed">Dashed Button</Button>
<Button type="text">Text Button</Button>
<Button type="link">Link Button</Button>
</Space>
</ConfigProvider>
</div>
)
}
export default App
切换深色和浅色主题
import {Button, ConfigProvider, Space, Switch, theme} from "antd";
import {useState} from "react";
function App() {
//darkMode判断是否出去暗黑模式
const [darkMode, setDarkMode] = useState(false);
return (
<div style={{ background:darkMode ? 'black': 'white', height: 'calc(100vh - 40px)', padding: '20px' }}>
<ConfigProvider theme={{algorithm:darkMode ? theme.darkAlgorithm :theme.defaultAlgorithm}}>
<Space wrap>
<Switch
checked={darkMode}
checkedChildren="暗黑模式"
unCheckedChildren="浅色模式"
onChange={() => setDarkMode(!darkMode)}
/>
<Button type="primary">Primary Button</Button>
<Button>Default Button</Button>
<Button type="dashed">Dashed Button</Button>
<Button type="text">Text Button</Button>
<Button type="link">Link Button</Button>
</Space>
</ConfigProvider>
</div>
)
}
export default App
以上代码,在组件内部使用了 React 的 useState
钩子来创建一个状态 darkMode
,并使用 setDarkMode
函数来更新该状态。初始状态为 false,表示浅色模式。
<Switch>
组件用于切换暗黑模式和浅色模式,根据 darkMode
的值来显示不同的文本。
主题持久化
可以使用localStorage
来存储设置的主题。
import {Button, ConfigProvider, Space, Switch, theme} from "antd";
import {useState} from "react";
function App() {
//darkMode判断是否出去暗黑模式
const [darkMode, setDarkMode] = useState(localStorage.getItem('darkMode') === 'true');
return (
<div style={{ background:darkMode ? 'black': 'white', height: 'calc(100vh - 40px)', padding: '20px' }}>
<ConfigProvider theme={{algorithm:darkMode ? theme.darkAlgorithm :theme.defaultAlgorithm}}>
<Space wrap>
<Switch
checked={darkMode}
checkedChildren="暗黑模式"
unCheckedChildren="浅色模式"
onChange={() => {
localStorage.setItem('darkMode',String(!darkMode));
setDarkMode(!darkMode)
}}
/>
<Button type="primary">Primary Button</Button>
<Button>Default Button</Button>
<Button type="dashed">Dashed Button</Button>
<Button type="text">Text Button</Button>
<Button type="link">Link Button</Button>
</Space>
{/*</Routes>*/}
</ConfigProvider>
</div>
)
}
export default App
没到切换主题时,主题状态都会存储到本地。
以上就是今日分享的文章,希望对小伙伴们有所帮助,晚安啦!
原文始发于微信公众号(大前端编程教学):React18+Antd5.6.3框架配置主题颜色和主题切换以及跟随系统切换主题
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/224036.html