关于umjs的主题切换实现

注意本文写作日期2024年7月7日 ,我目前是最新版本的
注意:该功能仅 antd v5 可用

最后目标实现

先说一下,umijs布局默认是内置@ant-design/pro-layout布局写的

看一下官网ProLayout - 高级布局布局与菜单

直接在app.tsx加入以下,umijs会读取对应信息配置到ProLayout

jsx 复制代码
...
export const layout = () => {
  return {
    logo: logo,
    rightContentRender: () => <RightContentRender />,
    menu: {
      locale: false,
    },
  };
};
...

在创建RightContentRender 组件

jsx 复制代码
import { Layout, Space, theme, Switch } from 'antd';
import {useAntdConfigSetter } from 'umi';
const { darkAlgorithm, defaultAlgorithm } = theme;

export default function Page() {
  const setAntdConfig = useAntdConfigSetter();
  // const antdConfig = useAntdConfig();
  return (
    <Layout>
      <Space>
        切换主题
        <Switch
          onChange={(data) => {
            // 此配置会与原配置深合并
            setAntdConfig({
              theme: {
                algorithm: [
                  data ? darkAlgorithm : defaultAlgorithm,
                ],
              },
            });
          }}
        ></Switch>
      </Space>
    </Layout>
  );
}

同时还要允许运行时修改配置

在你自己创建了config.ts文件或默认文件.umirc.ts里面加入

js 复制代码
 antd: {
    // compact: true,紧凑主题
    configProvider: {}
  },

参考Umijs

相关推荐
lvchaoq9 小时前
this指向面试代码输出题目合集
javascript·面试·职场和发展
你怎么知道我是队长10 小时前
JavaScript 函数 this 全解
开发语言·javascript·ecmascript
不简说11 小时前
JS 代码技巧 vol.5 — 10 个错误处理套路,从 try/catch 到 Error Boundary
前端·javascript·程序员
wordpress资料库12 小时前
Next.js更适合移动开发 不适合web开发
开发语言·前端·javascript·next.js
meilindehuzi_a13 小时前
Vue 项目中的前端 BFF:跨域代理与流式请求实战
前端·javascript·vue.js
To_OC14 小时前
LC 79 单词搜索:都说这是回溯入门题,我却连错三回
javascript·算法·leetcode
胡萝卜术14 小时前
从暴力到滑动窗口的终极形态:力扣3「无重复字符的最长子串」的优化进化之路
前端·javascript·面试
三8441 天前
路由策略/控制 配置双点双向路由重发布
服务器·前端·javascript
柒和远方1 天前
V043:BFF 层流式输出:从前端直连到生产级流式网关的架构演进
javascript·架构·node.js
用户938515635071 天前
SSE 流式输出的工程化拐点——为什么你需要一个 BFF 层
javascript·人工智能·全栈