📜  为什么需要在功能组件中导入 React?

📅  最后修改于: 2022-05-13 01:56:23.792000             🧑  作者: Mango

为什么需要在功能组件中导入 React?

React 是一个用于构建用户界面的声明式、高效且灵活的 JavaScript 库。它是 MVC 中的“V”。 ReactJS 是一个开源的、基于组件的前端库,只负责应用程序的视图层。

浏览器不理解 React,它只理解 HTML、CSS 和 JavaScript。因此,为了将 React 转换为有效的 JavaScript,我们使用了一个名为 Babel 的 webpack。它用于将 JSX 转换为对象,然后返回该对象。 Babel 已经包含在 create-react-app 生成的样板文件中。

让我们在示例的帮助下理解。

第 1 步:创建 React 应用程序

npx create-react-app reactapp

第 2 步:创建项目文件夹 ieloops 后,使用以下命令移动到该文件夹:

cd reactapp

项目结构:它将如下所示。

项目结构

项目结构

第 3 步:App.js中编写以下代码。下面是一个 JSX 语法。因此,无论何时使用它,都需要导入 React。

App.js
import React from 'react'
import ReactDOM from 'react-dom'
  
function App() { 
  return 

Hello, World!

}    const rootElement = document.getElementById('root') ReactDOM.render(, rootElement)


App.js
import React from 'react'
import ReactDOM from 'react-dom'
  
function App() { 
  return React.createElemet("h1",null,"Hello World") ;
}
  
const rootElement = document.getElementById('root')
ReactDOM.render(, rootElement)


App.js
import React from 'react'
import ReactDOM from 'react-dom'
  
function App() { 
  return 

Hello, World!

}    const rootElement = document.getElementById('root') console.log(App()) ReactDOM.render(, rootElement)


上面的 JSX 在内部被 Babel 转换为 this

Object
$$typeof: Symbol(react.element)
key: null
props: {children: 'Hello, World!'}
ref: null
type: "h1"
_owner: null
_store: {validated: false}
_self: null
_source: {fileName: '/src/index.js', lineNumber: 5, columnNumber: 10}
[[Prototype]]: Object

解释:

  1. type:在这个例子中,我们的组件是代表根元素的对象,它是 h1 元素。 type 是对应于 HTML 元素的属性。
  2. props:这个属性包含所有的孩子,在我们的例子中,它是 Hello, World!
  3. key:你可能知道我们在 React 中映射时将 key 作为 prop 传递,在我们的例子中是 null。它用于唯一标识虚拟 DOM 中的元素。
  4. ref:当您需要强制修改典型数据流之外的孩子时,我们需要 ref。
  5. $$typeof:此属性将对象标识为 React 元素

代码编译后浏览器看到的是以下代码。

应用程序.js

import React from 'react'
import ReactDOM from 'react-dom'
  
function App() { 
  return React.createElemet("h1",null,"Hello World") ;
}
  
const rootElement = document.getElementById('root')
ReactDOM.render(, rootElement)

您可以通过将其登录到控制台来亲自查看它。

应用程序.js

import React from 'react'
import ReactDOM from 'react-dom'
  
function App() { 
  return 

Hello, World!

}    const rootElement = document.getElementById('root') console.log(App()) ReactDOM.render(, rootElement)

说明: JSX 内部进入许多 React.createElement()函数调用,每个函数调用都返回一个对象,如上所示。现在正因为如此,我们需要从“react”导入 React,因为在内部每个 JSX 都在使用 JSX 转换器创建一个 React 组件。

因此,为了使用 createElement函数,我们需要导入 React,如果我们不导入它

那么 React.createElement函数将是未定义的。

注意:从 React 版本 17 开始,对于较小的项目,您甚至不需要从“react”导入 React,但早期版本的 React 项目需要导入它。 JSX 转换器在内部负责将 JSX 转换为 React 元素,但您可能仍需要导入它以使用诸如 useState 和 useEffect 之类的钩子。我们不需要在动作、reducers 等文件中导入 React,因为我们没有 JSX。

运行应用程序的步骤:打开终端并键入以下命令。

npm start

输出: