我是一个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'必须在作用域中
每当我们使用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"
}
在使用react框架时,首先需要从react中导入react,并且在导入后始终保持react的首字母大写。
import React, {Component} from '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;