使用 JSX react/react-in-jsx-scope 时,'React' 必须在范围内吗?

IT技术 reactjs
2021-04-11 16:50:00

我是一名 Angular 开发人员,并且是 React 的新手,这是一个简单的 React 组件,但不起作用

import react , { Component}  from 'react';
import         { render   }  from 'react-dom';

class TechView extends Component {

    constructor(props){
       super(props);
       this.state = {
           name:'Gopinath'
       }
    }
    render(){
        return(
            <span>hello Tech View</span>
        );
    }
}

export default TechView;

错误: 使用 JSX react/react-in-jsx-scope 时,“React”必须在范围内

6个回答

导入行应该是:

import React, { Component }  from 'react';

注意 React 的大写 R。

@MuhaiminCS 更改 eslintrc 文件中的规则
2021-05-25 16:50:00
如何避免它。我的意思是当我创建一个无状态函数时,在 Nextjs 中它不需要它
2021-05-27 16:50:00

将以下设置添加到.eslintrc.js/.eslintrc.json以忽略这些错误:

  rules: {
    // suppress errors for missing 'import React' in files
   "react/react-in-jsx-scope": "off",
    // allow jsx syntax in js files (for next.js project)
   "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }], //should add ".ts" if typescript project
  }

为什么? 如果您正在使用,NEXT.js那么您不需要React在文件顶部导入,nextjs 会为您执行此操作。

参考:https : //gorav.io/blog/nextjs-cheatsheet

请注意,如果未导入 React,则测试您的组件将是“困难的”。在这种情况下,如果您的组件没有导入,您的测试文件将需要导入它。
2021-05-27 16:50:00
@GorvGoyl 即使在这样做之后,构建也会失败并出现相同的错误。知道如何抑制它吗?
2021-06-13 16:50:00
NextJs 用户在这里,谢谢你。鉴于添加规则"react/react-in-jsx-scope": "off"将消除错误,添加globals完成了什么?谢谢!
2021-06-21 16:50:00

对于那些仍然没有得到公认的解决方案的人:

添加

import React from 'react'
import ReactDOM from 'react-dom'

在文件的顶部。

如果您使用的是 React v17,则可以安全地禁用 eslint 配置文件中的规则:

"rules": {
   ...
    "react/react-in-jsx-scope": "off"
   ...
}
选择 0 或“关闭”是一个见仁见智的问题。
2021-06-06 16:50:00
非常感谢,小纸条,我认为最好遵循 0(关闭)、1(警告)和 2(错误)约定而不是使用“关闭”。使配置更加一致。
2021-06-15 16:50:00
啊,老实说,我没有意识到所有数字也映射到等效的字符串......我的错误。因此,您实际上可以执行“关闭、警告、错误”或“0、1、2”。
2021-06-19 16:50:00
import React, { Component } from 'react';

这是拼写错误,您需要输入React而不是react

这个确切的答案已经作为公认的答案提供。
2021-06-03 16:50:00