关于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

相关推荐
FogLetter7 小时前
当JavaScript学会“分身术”:异步编程的进化简史
前端·javascript·面试
java1234_小锋7 小时前
Vue3+Vite简介以及构建第一个HelloWorld实例
前端·javascript·vue.js·vite
天天鸭9 小时前
5 万处中文的老项目实现国际化,如何用架构思维完成改造?
前端·javascript·架构
月月大王的3D日记10 小时前
Three.js 入门系列(7):让甜甜圈围着我转 —— 3D文字生成
前端·javascript
半兽先生11 小时前
深度对比:Mapbox GL JS vs Maptalks,WebGIS 开发该如何选型?
开发语言·javascript·ecmascript
only-lucky12 小时前
QML深入学习五(Controls模块)
前端·javascript·学习
其美杰布-富贵-李13 小时前
第 5 篇:Object3D、Group 与场景树
javascript·three.js
海带紫菜菠萝汤13 小时前
H.264 宏块划分与码率分配机制:影响压缩效率的关键参数详解
前端·javascript·音视频
mONESY15 小时前
React + TypeScript 入门到进阶:从 Props 类型约束到状态管理与副作用最佳实践
javascript
码哥DFS16 小时前
算法练习day1-备战2027届秋招
前端·javascript·数据结构·算法