当前位置: 首页 > news >正文

苏州企业网站建设专家番禺做网站多少钱

苏州企业网站建设专家,番禺做网站多少钱,黄骅港高铁最新进展,郑州网球公开赛目录 效果预览完整代码我遇到的BUG问题代码BUG1:暗黑模式下内容区不变成深色BUG2:光亮模式下的左右区域是深色 补充知识ConfigProvider是什么?Ant Design中的theme如何使用?theme 配置的常见字段主题算法通过 useToken 获取主题 效…

目录

  • 效果预览
  • 完整代码
  • 我遇到的BUG
    • 问题代码
    • BUG1:暗黑模式下内容区不变成深色
    • BUG2:光亮模式下的左右区域是深色
  • 补充知识
    • ConfigProvider是什么?
    • Ant Design中的theme如何使用?
      • theme 配置的常见字段
      • 主题算法
      • 通过 useToken 获取主题

效果预览

暗黑模式:
在这里插入图片描述

光亮模式:
在这里插入图片描述

完整代码

import React, { useState } from 'react';
import { Breadcrumb, Layout, Menu, theme, ConfigProvider, Switch } from 'antd';const { Header, Content, Footer } = Layout;const items = [{ key: '0', label: '测试' }];const App: React.FC = () => {const [isDarkMode, setIsDarkMode] = useState(false);return (<ConfigProvidertheme={{algorithm: isDarkMode ? theme.darkAlgorithm : theme.defaultAlgorithm,}}>{/* useToken 必须在 ConfigProvider 作用域内 */}<ThemeWrapper isDarkMode={isDarkMode} setIsDarkMode={setIsDarkMode} /></ConfigProvider>);
};const ThemeWrapper: React.FC<{ isDarkMode: boolean; setIsDarkMode: React.Dispatch<React.SetStateAction<boolean>> }> = ({ isDarkMode, setIsDarkMode }) => {const { token } = theme.useToken(); // 确保 useToken 在 ConfigProvider 作用域内return (<Layout style={{minHeight : window.innerHeight}}><Headerstyle={{display: 'flex',alignItems: 'center',background: token.colorBgElevated, // 修正 Header 适配暗黑模式}}><Menutheme={isDarkMode ? 'dark' : 'light'}mode="horizontal"defaultSelectedKeys={['0']}items={items}style={{flex: 1,minWidth: 0,background: token.colorBgElevated, // 确保 Menu 颜色一致}}/><div><Switchchecked={!isDarkMode}onChange={() => setIsDarkMode(!isDarkMode)}checkedChildren="🌙"unCheckedChildren="☀️"/></div></Header><Content style={{ padding: '0 48px' }}><Breadcrumbstyle={{ margin: '16px 0' }}items={[{ title: 'Home' }, { title: 'List' }, { title: 'App' }]}/><divstyle={{background: token.colorBgContainer, // 确保背景颜色正确color: token.colorText, // 文字颜色适配暗黑模式minHeight: 580,padding: 24,borderRadius: token.borderRadiusLG,}}>Content</div></Content><Footer style={{ background: token.colorBgElevated, textAlign: 'center' }}>Ant Design ©{new Date().getFullYear()} Created by Ant UED</Footer></Layout>);
};export default App;

我遇到的BUG

问题代码

import React, { useState } from 'react';
import { Breadcrumb, Layout, Menu, theme, ConfigProvider, Switch } from 'antd';
import './index.css';const { Header, Content, Footer } = Layout;const items = [{key: 0,label: '测试',},
];const App: React.FC = () => {// 主题切换状态const [isDarkMode, setIsDarkMode] = useState(false);// 获取当前主题 token(应该在组件顶层调用)const { token } = theme.useToken();return (<ConfigProvidertheme={{algorithm: isDarkMode ? theme.darkAlgorithm : theme.defaultAlgorithm,}}><Layout><Header style={{ display: 'flex', alignItems: 'center' }}><Menutheme={isDarkMode ? 'dark' : 'light'}mode="horizontal"defaultSelectedKeys={['0']}items={items}style={{ flex: 1, minWidth: 0 }}/><Switchchecked={!isDarkMode}onChange={() => setIsDarkMode(!isDarkMode)}checkedChildren="🌙"unCheckedChildren="☀️"/></Header><Content style={{ padding: '0 48px' }}><Breadcrumbstyle={{ margin: '16px 0' }}items={[{ title: 'Home' }, { title: 'List' }, { title: 'App' }]}/><divstyle={{backgroundColor: token.colorBgContainer,minHeight: 1080,padding: 24,borderRadius: token.borderRadiusLG,}}>Content</div></Content><Footer style={{ textAlign: 'center' }}>Ant Design ©{new Date().getFullYear()} Created by Ant UED</Footer></Layout></ConfigProvider>);
};export default App;

BUG1:暗黑模式下内容区不变成深色

效果如图:
在这里插入图片描述

原因:theme.useToken() 的 token 在 ConfigProvider 重新渲染时没有立即更新。
解决办法:确保 theme.useToken() 在 ConfigProvider 作用域内,并且 ConfigProvider 重新渲染时 token 正确更新。

BUG2:光亮模式下的左右区域是深色

效果如下:
在这里插入图片描述
产生原因:Header 组件默认没有使用 theme.useToken() 提供的背景色,而是继承了 Ant Design 默认的 light 主题颜色
解决办法:使用 token.colorBgElevated 作为 Header 的背景(它适用于暗黑模式的顶层容器)。确保 Header、Menu、Switch 共享相同的 backgroundColor。

补充知识

ConfigProvider是什么?

ConfigProvider 是 Ant Design 中的一个组件,用于在应用中全局配置和定制 Ant Design 组件的默认行为和主题。它是一个上下文提供器,用来设置应用中的全局配置,比如主题、国际化语言、组件的默认样式等。

Ant Design中的theme如何使用?

在 Ant Design 中,theme 是用于设置和管理 UI 样式的工具,通常与 ConfigProvider 一起使用来定制整个应用的视觉风格。theme 允许开发者通过配置颜色、字体、布局、组件样式等来调整 Ant Design 组件的外观,使其与应用的整体设计保持一致。

theme 配置的常见字段

  • colorPrimary:设置主色调。影响许多组件的颜色,如按钮、链接、选中状态等。
  • colorLink:设置链接文字的颜色。
  • colorBgBase:设置基础背景颜色。
  • colorTextBase:设置基础文字颜色。
  • borderRadiusBase:设置全局组件的边框圆角。
  • fontSizeBase:设置基础字体大小。
  • size:设置默认组件尺寸(如 small, middle, large)。

主题算法

Ant Design 支持多种主题算法,其中常见的包括:

  • theme.defaultAlgorithm:默认主题算法,通常用于浅色模式。
  • theme.darkAlgorithm:暗黑主题算法,用于暗黑模式。

通过 useToken 获取主题

在使用主题时,你可以通过 theme.useToken 来访问当前的主题 token 和样式变量。例如,访问当前主题下的背景色、文本色等:

import React from 'react';
import { theme } from 'antd';const App: React.FC = () => {const { token } = theme.useToken();return (<div style={{ backgroundColor: token.colorBgContainer, color: token.colorText }}>Content with dynamic theme</div>);
};export default App;
http://www.dtcms.com/a/500805.html

相关文章:

  • icp备案 网站负责人福建网站建设价格
  • 在AGX上安装opencv4的cuda版本,带有GPU加速的opencv库
  • 深圳专业做网站排名多少钱无锡网页制作服务
  • 【学习系列】SAP RAP 8:行为定义-Authorization Control
  • 河北建设厅网站修改密码在哪网站建设百度推广总结
  • Java Web API 开发完整指南
  • 网站建设与管理复习知识点购物网站怎么创建
  • IEEE 802.11无线wifi帧结构
  • [SCADE编译原理] 时钟分析原理(2003)
  • 做网站的市场细分陶瓷网站制作
  • 毕设做网站具体步骤网站开发模板
  • Vue3与Vue2中使用对比
  • 做电子的外单网站有哪些的优质的成都网站建设推
  • 手机网站建设的现状河南省住房和建设厅网站
  • 企业官方网站建设费用网站免费源码
  • dz做电影网站动画制作过程
  • 哪里有网站建设加工微网站怎么注册账号
  • 《隐变量》
  • 网站建设 厦门金牛区网站建设
  • 做的好的招投标网站深圳建设工程交易服务网官网龙岗
  • 网站建设完工后在什么科目核算画册设计排版的技巧和规则
  • 《第05章 项目整体管理》备考知识点整理
  • QGIS字段计算器常用公式汇总(含实操示例)
  • 国外网站seo用哪个网站做相册视频文件
  • 迅速上排名网站优化微信公众平台号申请注册入口
  • 网站开发语言p我要注册
  • 免费传奇网站模板网站建设是管理费用的哪项费用
  • 学校网站建设所使用的技术如何知道一个网站是谁做的
  • 网站建设分金手指专业五wordpress怎么使用插件下载失败
  • 15.搜索二叉树(一)