import { Switch, theme } from 'antd';
import React, { useEffect, useState } from 'react';
import { useAntdConfig, useAntdConfigSetter } from 'umi';
const { darkAlgorithm, defaultAlgorithm } = theme;
export default function ThemePage() {
const setAntdConfig = useAntdConfigSetter();
const antdConfig = useAntdConfig();
const [checked, setChecked] = useState<boolean>(false);
useEffect(() => {
// 此配置会与原配置深合并
setAntdConfig({
theme: {
algorithm: [checked ? darkAlgorithm : defaultAlgorithm],
},
});
// or
// setAntdConfig((config) => {
// const algorithm = config.theme!.algorithm as MappingAlgorithm[];
// if (algorithm.includes(darkAlgorithm)) {
// config.theme!.algorithm = [defaultAlgorithm];
// } else {
// config.theme!.algorithm = [darkAlgorithm];
// }
// return config;
// });
}, [checked]);
return (
<Switch
checked={checked} // antdConfig?.theme?.algorithm).includes(darkAlgorithm)
onChange={(data) => {
setChecked(data);
}}
></Switch>
);
}
两种方式都可以,选其中一个就行
本文介绍了如何在React组件中使用AntDesign的themeAPI,通过useState和useAntdConfig管理暗色模式算法的切换。展示了两种设置主题算法的方法:深合并配置和条件更新主题。
1380





