我是一个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'必须在作用域中


当前回答

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

Add

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

在文件的顶部。

其他回答

导入行应该是:

import React, { Component }  from 'react';

注意大写的R代表React。

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

Add

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

在文件的顶部。

我注意到的一件事是从“React”导入React;应该在那里,而不是import react, {Component} from 'react'; 我做过的其他事情是,

(1)添加以下行到index.js文件。

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

如果没有工作,添加这一行从“react-dom/client”导入ReactDOM;而不是从'react-dom'导入ReactDOM

(2)修改eslint配置文件的以下属性。

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

但是从React 17开始,不需要添加import React from ' React '和next js

将以下设置添加到.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://gourav.io/blog/nextjs-cheatsheet (下一页.js备忘单)

如果你想为所有使用jsx语法的文件自动包含import React from ' React ',请安装React -require babel插件:

npm install babel-plugin-react-require --save-dev

在.babelrc中添加react-require。这个插件应该在transform-es2015-modules-commonjs插件之前定义,因为它使用ES2015模块语法将React导入作用域。

{
  "plugins": [
    "react-require"
  ]
}

来源:https://www.npmjs.com/package/babel-plugin-react-require