为什么我们应该使用 import React from 'react'

IT技术 javascript reactjs react-router react-redux
2021-05-07 06:29:52

我正在学习 React js,以防万一 ii App.js module我必须导入 React,因为render()方法用于将 JSX 转换为 dom 元素,但在 Person.js 中,我们正在创建一个箭头函数并导出它,以便它可以在 App module的渲染函数中导入和使用,但在我们导入 React 的 App module中,它将转换module中的 JSX 并在 DOM 上呈现,但是当我们在 Person 中删除以下代码时它会抛出错误。 js

import React from 'react' in Person.js

它抛出错误

如果我们在 React 类提供的方法(如 render )中声明 JSX,则在使用 JSX 时,React' 必须在范围内,它应该给出错误。

有人可以解释一下吗

i) 为什么我们需要在 Person.js 中导入 react?

ii)为什么删除上面的代码时会抛出错误?

情况一)

人物.js

 import React from 'react'

 const person = () => {
 return <p>This is person module used inside app module</p>
 };

 export default person

情况二)

应用程序.js

import React, { Component } from 'react';
import './App.css'
import Person from './Person/Person'

class App extends Component {
render() {
return (
  <div className="App">
    <h1>this is app module and i am being used as the root component</h1>
     <Person/>
  </div>
);}}

export default App;
2个回答

如果你给 Babel 一些 JSX,你会发现 JSX 只是React.createElementcall 的这就是为什么我们在使用 JSX 时需要导入 React。

输入

<p>This is person module used inside app module</p>

输出

/*#__PURE__*/
React.createElement("p", null, "This is person module used inside app module");

当您尝试在 javascript 文件中使用 jsx 时,您的普通编译器甚至 babel 都无法理解它。虽然普通编译器永远不会理解它。但无论如何你想说你的编译器我在文件中为你提供了一个 jsx。

import React from 'react';

以上是指导babel继续的方法,现在对你来说很容易。

<p>This is person module used inside app module</p>

上面是一个jsx语句。因此,无论何时使用它,您都需要导入 React。同样,我们在许多地方的动作、减速器等中也不需要它,因为那里没有 jsx。