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


当前回答

如图所示,通过在package.json中添加插件g——fix来删除lint错误并添加自动修复

其他回答

这是由于从'react'导入错误的模块react而导致的错误,您试试这个如何: 1日

import React , { Component}  from 'react';

或者你也可以试试这个:

import React from 'react';
import { render   }  from 'react-dom';

class TechView extends React.Component {

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

export default TechView;

这个错误非常直接,你导入了react而不是react。

我也有类似的问题。

在我在主组件中添加下面的代码后得到了修复:App.js 如果您有其他组件,请确保在这些文件中也导入react。

import React from "react";

每当我们使用JSX在React中创建自定义组件时,它都会在Babel的帮助下转换为向后兼容的JS代码。 因为JSX编译成React。createElement, React库也必须始终在作用域中。

例子:

这个自定义组件:

<MyButton color="blue" shadowSize={2}> Click Me </MyButton>

转化为:

React.createElement(MyButton, {color: 'blue', shadowSize: 2}, 'Click Me')
^^^^^

由于转换后的代码需要React库,我们需要将其导入作用域。

React Docs参考

修复:导入React

import React from 'react';
// or
import * as React from 'react';

选择一个,这取决于用户!

注意: 从React 17+开始,我们就不用做这样的导入了,但是为了安全起见,最好还是添加导入,因为ESLint会产生错误!

你可以在ESLint配置文件(.eslintrc.json)中禁用该规则来忽略这些错误:

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

下面这行为我解决了这个问题。

/** @jsx jsx */
import {css, jsx} from "@emotion/react";

希望这对你有帮助。