React18警告-defaultProps

3,312 阅读2分钟

image.png

Table: Support for defaultProps will be removed from function components in a future major release. Use JavaScript default parameters instead.

React 在未来大版本会移除函数组件的 defaultProps 属性支持,改用 js 函数方法的 default 值替换。

点击跳转确实看到了 antd 的 Table 组件使用了 detaultProps 属性。

image.png

这是比较老的写法了,直接用 TS 可以替代这种。

react 未来的大版本应该说的是 React-19 了,在官网找到了说明: image.png

这是直接拥抱 TS 了。

项目中使用的 @types/react 给这个属性增加了标记

image.png

目前 antd 并没有升级版本来解决这个警告,看着可以通过 eslint 关闭这个警告

1.  安装依赖 npm install eslint-plugin-react --save-dev

2.  修改 eslint 配置

module.exports = {
  plugins: ['react'],
  extends: ['plugin:react/recommended'],
  rules: {
    'react/require-default-props': 'off'
  }
};

(plugin:react/recommended是eslint-plugin-react插件提供的一个推荐的规则配置)

我试了下,继承 react/recommended 和我们已有的集成 react-app 差比比较大,会出现更多个告警。

暂时没找到好的解决方案

限制 react 到一个没有校验它的历史版本

查看目前项目 react 和 @types/react 的版本

image.png

为什么在 github 搜不到 ! image.png

改从 npmjs 仓库 找到链接

DefinitelyTyped/types/react at master · DefinitelyTyped/DefinitelyTyped · GitHub

image.png

这怎么还没有 18 版本,都是什么鬼,看了下默认的 index.d.ts 就是最新版了,有版本文件夹的是归档的

image.png 不是使用分只控制版本的,应该是 publish 控制的,这要到 npmjs 里看看了

www.npmjs.com/package/@ty…

也是缝缝补补的一堆版本

image.png

最近没有校验的是 18.2.79 版本

image.png

image.png

试了下所有的 @types/react 18.3 版本都是把它标记为弃用,所以需要降到 18.2,如果真要降 还是直接改 react 版本比较合理,否则容易出现声明版本不匹配

这要直接修改外层的 package.json

{
    "@types/react": "~18.2.0",
    "@types/react-dom": "~18.2.0",
    "react": "~18.2.0",
    "react-dom": "~18.2.0",
}