React设置antd3x自定义主题,TypeError: this.getOptions is not a function的解决方法

news/2024/7/19 14:33:31 标签: js, javascript, reactjs, less

React设置antd3x自定义主题,TypeError: this.getOptions is not a function的解决方法

提示:主要使用:react-app-rewired 和 customize-cra实现antd3x版本自定义主题


问题

在这里插入图片描述
报错图片


分析:

在这里插入图片描述
1. 由于引入less-loader(第三方库)时,默认下载该库的最新版本。 可能看到该文章时,版本已经高于8.0.0了
2. antd3x版本的文档发布至今多年,疏于维护,更不上less-loader版本的更新。
3. antd3x版本的文档仅支持:^5.0.0大版本下的所有版本
4. less-loader的8.0.0版本要求lessOptions属性设置为函数,而antd3x文档中传入的是对象。


解决方案1:降低版本

1. 先卸载less-loader当前版本: yarn remove less-loader
2. 再安装7.0.0左右的版本:yarn add less-loader@7.1.0
3. 在config-overrides.js配置文件中设置对应的属性

js">const { override, fixBabelImports, addLessLoader } = require('customize-cra');

module.exports = override(
    fixBabelImports('import', {
        libraryName: 'antd',
        libraryDirectory: 'es',
        style: true,
    }),
    addLessLoader({
        lessOptions: {
            javascriptEnabled: true, 
            modifyVars: { '@primary-color': 'green' }, 
        },
    })
);

解决方案2:使用craco库

1. 使用craco库修改create-react-app的默认配置
2. 下载:yarn add @craco/craco craco-less
3. 修改package.json文件中的scripts属性

js">"scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "react-scripts eject"
  },

4. 创建craco.config.js配置文件修改默认配置

js">const CracoLessPlugin = require('craco-less');

module.exports = {
  plugins: [
    {
      plugin: CracoLessPlugin,
      options: {
        lessLoaderOptions: {
          lessOptions: {
            modifyVars: { '@primary-color': 'red' }, // 修改主题颜色
            javascriptEnabled: true,
          },
        },
      },
    },
  ],
};

http://www.niftyadmin.cn/n/1536262.html

相关文章

虚函数与纯虚函数区别

虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数! 纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数! 虚函…

Java学习之Iterator(迭代器)的一般用法 (转)

迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的Iterator功能…

globalThis指向浏览器和Node.js环境下的全局对象(window/global)

文章目录一、globalThis是什么?二、使用步骤1. globalThis为全局变量,直接使用三、特点:一、globalThis是什么? globalThis 提供了一个标准的方式来获取不同环境下的全局 this 对象(也就是全局对象自身) …

图元文件

Windows 窗体编程图像、位图和图元文件Image 类是抽象基类,它提供了处理光栅图像(位图)和矢量图像(图元文件)的方法。Bitmap 类和 Metafile 类都继承自 Image 类。Bitmap 类提供了用于加载、保存和处理光栅图像的更多方…

77 swapon-激活Linux系统中交换空间

Linux swapon命令用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存。 语法 /sbin/swapon -a [-v] /sbin/swapon [-v] [-p priority] specialfile ... /sbin/swapon [-s] 参数说明: -h 请帮帮我-V 显示版本讯息-s 显示简短的…

webpack打包,提示The ‘mode‘ option has not been set警告

使用npm run build命令打包项目 警告提示: The ‘mode’ option has not been set 原因: 在package.json文件中设置的build命令值为:“webpack", "scripts": {"build": "webpack"},没有在webpack.config.js文件中…

[转载]点阵图(位图)与矢量图的区别

计算机绘图分为点阵图(又称位图或栅格图像)和矢量图形两大类,认识他们的特色和差异,有助于创建、输入、输出编辑和应用数字图像。位图图像和矢量图形没有好坏之分,只是用途不同而已。因此,整合位图图像和矢量图形的优点&#xff0…

在配置文件tsconfig.json中找不到任何输入。指定的 “include“ 路径为“[“**/*“]”,“exclude“ 路径为“[]”

问题 在VSCode编辑器中,莫名奇妙的就报出在tsconfig.json中找不到任何输入。 按照vscode的报错提示,在tsconfig.json中添加"include":[“src/**/*”]和"exclude": [],依旧报错。 原因 创建tsconfig.json配置文件时&#xff0c…