我想使用 Ant design v4动态实现暗/亮主题之间的切换。
可以使用其他 CSS/LESS 导入自定义主题,如此处所述:https : //ant.design/docs/react/customize-theme#Use-dark-theme
但我不确定如何从代码中动态地在这些主题之间切换。我的 React 应用程序 ( darkMode) 中有一个变量,用于指示当前是否使用了深色主题。更改此变量时,我必须提供正确的 CSS 文件。但是我不能仅在满足某些条件时动态导入 CSS,因为这不是导入的工作方式。
我试图require在下面的代码中做一些乱七八糟的事情,但这是非常非常糟糕的方法,它仍然无法正常工作(因为 CSS 被注入但可能没有被撤回。):
const Layout = () => {
...
useEffect(() => {
if (darkMode === true) {
require("./App.dark.css")
} else {
require("./App.css")
}
}, [darkMode])
return (
<Home />
)
}
Run Code Online (Sandbox Code Playgroud)
应该可以以某种方式切换主题,因为它已经在 Ant 设计文档 ( https://ant.design/components/button/ ) 中实现:
你知道怎么做吗?
谢谢!
我有具有以下文件结构的 monorepo(纱线工作区):
??? client (workspace @client)
? ??? package.json
? ??? tsconfig.json (extended tsconfig)
??? server (workspace @server)
? ??? getData.ts
? ??? package.json
? ??? tsconfig.json (extended tsconfig)
??? shared
? ??? sanitizeData.ts
??? package.json (monorepo root)
??? tsconfig.json (base tsconfig)
Run Code Online (Sandbox Code Playgroud)
我想从shared/sanitizeData.tsin使用函数server/getData.ts
我尝试paths从 Typescript 中使用,根据文档,它看起来很简单,但我做错了:
error TS2307: Cannot find module '@shared/sanitizeData'.
Run Code Online (Sandbox Code Playgroud)
server/tsconfig.json:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"baseUrl": ".",
"rootDir": "../",
"outDir": "build",
"paths": {
"@shared/*": ["shared/*"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
server/getData.js:
??? …Run Code Online (Sandbox Code Playgroud)