React入门 - 03(初识 React 组件和 JSX)

本章内容

目录

    • 1.初识 React 组件
    • 2.关于 JSX

继上一节的工程案例,我们这一节主要了解一下 React组件和 “JSX 语法”。

前置知识点:ES6模块化&继承

1.初识 React 组件

1、打开 src/index.js文件(项目的入口文件)内容,我们可以看见 import App from './App',这个App其实就是 React中的一个组件。

2、接着我们点开 App.js文件,详细看看里面怎么定义 App这个组件。下面的代码是最新一版 React的组件定义的写法

import logo from './logo.svg'; // 引入一个logo图片
import './App.css'; // 引入 App 的样式文件

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

3、为了更好的了解学习 React语法,我们将 App.js的代码改为之前版本的类组件写法。运行后效果是一样的。

// 1、引入 React
// 2、引入 Component,用于创建的组件继承于Component
import React, { Component } from "react"; 

import logo from './logo.svg'; // 3、引入一个logo图片
import './App.css'; // 4、引入 App 的样式文件

// 5、使用 ES6 继承,创建一个 App继承于 Component
class App extends Component {
 // 6、给这个 App组件添加一个 render 方法
  render() {
  // 7、这个render 方法需要返回一个内容,内容多行的话可以使用 括号() 括起来
    return (
   // 8、这里返回的东西就是该组件想在界面展示的内容
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />

          <p>
            Edit <code>src/App.js</code> and save to reload.
          </p>

          <a
            className="App-link"
            href="https://reactjs.org"
            target="_blank"
            rel="noopener noreferrer"
          >
            Learn React
          </a>
        </header>
      </div>
    )
  }
}
export default App

4、App组件定义好了后,回到入口文件 index.js

import React from 'react'; // 1、引入 react
import ReactDOM from 'react-dom/client';// 2、引入 react-dom 
import './index.css'; // 3、引入样式文件。在react可以通过这样的方式进行 css和js的分离,然后通过“模块”的方式嵌入到 js中
import App from './App'; // 4、后边的 ./App 其实是 ./App.js 的缩写。后缀可以省略,因为“脚手架工具”本身就会去当前目录下优先寻找后缀为 .js 的 App 文件并引入
import reportWebVitals from './reportWebVitals';// 5、测量应用程序中的性能时,用于记录其结果


// 6、通过 ReactDOM 的render 方法将 App 组件挂载到一个 DOM 节点上(这里是挂载到 id 为 root 的 DOM 节点上)
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);


reportWebVitals(); // 监测性能

5、上面有说 App组件在 index.js文件中被挂载在 idroot的节点上,那有同学就会疑惑这个节点是哪里来的呢?这就要说到 public文件夹下的 index.html文件了。在这个 HTML模版中,有一个 id="root"div,它就是用于承载网页的所有内容容器。所有的这些内容是由 React生成的(例如上面生成的 App组件,然后通过 ReactDOM.render()将组件挂载到这个root节点上,这样网页就显示出相应的内容。)

DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />
    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
    
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
    
    <title>React Apptitle>
  head>
  <body>
    
    <noscript>You need to enable JavaScript to run this app.noscript>

  	
    <div id="root">div>

    
  body>
html>

6、关于 index.js 和 App.js 文件中为什么有 import React form 'react'这段代码,是否有其必要性?答案是肯定的!!!

  • 首先在 index.js文件中,因为我们需要挂载 App组件: ReactDOM.render(, document.getElementById('root')),我们并没有直接写 App,而是使用像 HTML标签方式去使用 ,这是一种 “JSX 语法”,因此需要 import React from 'react'去引入 React,以便顺利的解析编译 JSX 语法。

  • 同理,在 App.js文件中,render方法中 return返回的也是 ”JSX语法“,因此也需要引入 React

// App.js 文件

import React, { Component } from "react";
import logo from './logo.svg';
import './App.css';

class App extends Component {
  render() {
    return ( // 这里返回的代码用了 ”JSX语法“
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <p>
            Edit <code>src/App.js</code> and save to reload.
          </p>
          <a
            className="App-link"
            href="https://reactjs.org"
            target="_blank"
            rel="noopener noreferrer"
          >
            Learn React
          </a>
        </header>
      </div>
    )
  }
}
export default App

2.关于 JSX

  • 从上面了解组件的过程中,我们知道了,在 React中,在 JS中写 ”HTML 标签“称之为”JSX语法“。

  • ”JSX语法“不仅允许HTML的所有标签,还可以用自己定义的标签

到此,本章内容结束!

你可能感兴趣的:(react.js,前端,前端框架)