【问题标题】:'React' is declared but its value is never read in ts 4.2'React' 已声明,但它的值从未在 ts 4.2 中读取
【发布时间】:2021-05-27 04:56:57
【问题描述】:

刚刚升级到 typescript 4.2.2 并开始收到我所有的 react 导入的以下警告,即

import React from "react";

导致此警告

'React' 被声明,但它的值从未被读取

据我所知,此导入之前运行良好,并且需要使用 jsx。我查看了更改日志,但没有看到与此新警告相关的任何更改。我的tsconfig也有"jsx": "react-jsx"

关于如何解决这个问题的任何建议?

【问题讨论】:

  • 我相信你正在使用 React 17,你不需要再导入 React
  • 如果我删除它,我会收到一个错误Uncaught ReferenceError: React is not defined 我认为它只是在某些 babel 配置中是可选的,所以保留它应该仍然有效?
  • 是的,有一些 babel 配置需要调整,你可以在这里查看reactjs.org/blog/2020/09/22/…

标签: reactjs typescript


【解决方案1】:

您可以通过打开 tsconfig.json 文件并将 noUnusedLocals 属性设置为 false 来全局禁用此错误检查。

【讨论】:

    【解决方案2】:

    如果您使用 React v17,您可以在 eslint 中禁用该规则。因为在 React v17 中你不再需要在编写 JSX 时导入 react:

    "rules": {
       ...
        "react/react-in-jsx-scope": "off"
       ...
    }
    

    【讨论】:

      【解决方案3】:

      添加:

      export default React.memo(YourComponent);
      

      【讨论】:

        【解决方案4】:

        在我的情况下,我无法访问 babel,但是能够通过以下 webpack 插件解决此问题

          plugins: [
            new webpack.ProvidePlugin({
              React: 'react'
            })
          ]
        

        【讨论】:

          猜你喜欢
          • 2019-06-23
          • 1970-01-01
          • 2021-12-23
          • 2023-03-15
          • 2022-10-13
          • 2019-01-06
          • 1970-01-01
          • 2021-02-25
          • 1970-01-01
          相关资源
          最近更新 更多