我想在我的新React Web应用程序中使用这个深色主题:https://github.com/ant-design/ant-design-dark-theme
遵循自定义主题here的说明和自述文件here中应用主题的说明之后,我的config-overrides.js如下所示:
ConfigLambdaPermission:
Type: "AWS::Lambda::Permission"
DependsOn:
- MyApiName
- MyLambdaFunctionName
Properties:
Action: lambda:InvokeFunction
FunctionName: !Ref MyLambdaFunctionName
Principal: apigateway.amazonaws.com
这似乎不起作用。例如,我有一个菜单antd组件仍然以“浅色”主题而不是“深色”主题显示。
我想让我所有的antd组件都以深色主题呈现,而无需我明确设置它。那可能吗?如果是,我在做什么错了?
这里不是前端开发人员,因此,如果我缺少明显的内容,请告诉我。
答案 0 :(得分:3)
对我有用的解决方案是@JoseFelix和@Anujs答案的组合。谢谢你们的回答:
const darkTheme = require('@ant-design/dark-theme');
const { override, fixBabelImports, addLessLoader } = require('customize-cra');
module.exports = override(
fixBabelImports('import', {
libraryName: 'antd',
libraryDirectory: 'es',
style: true,
}),
addLessLoader({
javascriptEnabled: true,
modifyVars: darkTheme.default
}),
);
答案 1 :(得分:2)
当默认导出是带有变量的对象时,代码将破坏默认导出。因此,应该是:
const darkTheme = require('@ant-design/dark-theme').default;
const { override, fixBabelImports, addLessLoader } = require('customize-cra');
module.exports = override(
fixBabelImports('import', {
libraryName: 'antd',
libraryDirectory: 'es',
style: true,
}),
addLessLoader({
javascriptEnabled: true,
modifyVars: darkTheme
}),
);
答案 2 :(得分:2)
如果您管理已导入的日志darkTheme
变量,则所有样式变量都存在于darkTheme.default
对象中。我已经实现了他们的aliyum-theme
。
因此,要使代码正常工作,您需要将modifyVars
文件中的config-overrides.js
更改为
const { darkTheme } = require('@ant-design/dark-theme');
const { override, fixBabelImports, addLessLoader } = require('customize-cra');
module.exports = override(
fixBabelImports('import', {
libraryName: 'antd',
libraryDirectory: 'es',
style: true,
}),
addLessLoader({
javascriptEnabled: true,
modifyVars: {...darkTheme.default}
}),
);
ProTip:要在应用程序中覆盖darkTheme,您可以创建自己的JavaScript文件并将其导入config-overrides.js
文件中,并在modifyVars
中进行销毁
答案 3 :(得分:0)
以前的答案对我不起作用。如果对其他人有帮助,这对我是有用的。我认为这是由于新的较少加载程序版本和/或antd打包方式的更改(我真的不确定)。
const { getThemeVariables } = require("antd/dist/theme");
const { override, fixBabelImports, addLessLoader } = require("customize-cra");
module.exports = override(
fixBabelImports("import", {
libraryName: "antd",
libraryDirectory: "es",
style: true,
}),
addLessLoader({
lessOptions: {
javascriptEnabled: true,
modifyVars: {
...getThemeVariables({
dark: true,
compact: true, // optional
}),
},
},
})
);