React筆記01:react基礎、react腳手架、JSX

1 React概述

1.1 什麼是react

React 是一個用於構建用戶界面的 JavaScript 庫css

用戶界面:HTML頁面(前端)html

React 主要用來寫HTML頁面,或構建Web應用前端

若是從 MVC 的角度來看,React 僅僅是視圖層(V),也就是隻負責視圖的渲染,而並不是提供了node

完整的 M 和 C 的功能。react

React 起源於 Facebook 的內部項目,後又用來架設 Instagram 的網站,並於 2013 年 5 月開源web

image-20210114191835980

1.2 react特色

  • 聲明式

你只須要描述 UI(HTML)看起來是什麼樣,就跟寫HTML同樣npm

React 負責渲染 UI,並在數據變化時更新 UI數組

const jsx = <div className="app">
<h1>Hello React! 動態變化數據:{count}</h1>
</div>
  • 基於組件瀏覽器

  • 學習一次,隨處使用:能夠開發web、移動端(React-native)、AR(React360)等等。安全

2 React基本使用

2.1 react的安裝

npm i react react-dom

react 包是核心,提供建立元素、組件等功能

react-dom 包提供 DOM 相關功能等

2.2 react的使用

  • 第一步:引入依賴
<script src="./node_modules/react/umd/react.development.js"></script>
<script src="./node_modules/react-dom/umd/react-dom.development.js"></script>
  • 第二步:建立react元素

  • 第三步:渲染react元素到頁面中

<div id="root"></div>

<script>
    //建立react元素
const title = React.createElement('h1', null, 'Hello React');
    //渲染react元素
ReactDOM.render(title, document.getElementById('root'))
</script>

2.3 方法說明

  • React.createElement() 說明(知道)
// 返回值:React元素
// 第一個參數:要建立的React元素名稱
// 第二個參數:該React元素的屬性
// 第三個及其之後的參數:該React元素的子節點
const el = React.createElement('h1', { title: '標題' }, 'Hello React')
  • ReactDOM.render()說明 (掌握)
// 第一個參數:要渲染的React元素
// 第二個參數:DOM對象,用於指定渲染到頁面中的位置
ReactDOM.render(el, document.getElementById('root'))

3 React腳手架的使用

3.1 腳手架意義

腳手架是開發 現代Web 應用的必備。

充分利用 Webpack、Babel、ESLint 等工具輔助項目開發。

零配置,無需手動配置繁瑣的工具便可使用。

關注業務,而不是工具配置。

3.2 使用 React腳手架初始化項目

第一步:初始化項目

npx create-react-app my-app

第二步:啓動項目

npm start
或者 yarn start

image-20210114193902249

3.3 npx命令介紹

  • npm v5.2.0 引入的一條命令

  • 目的:提高包內提供的命令行工具的使用體驗

  • 原來:先安裝腳手架包,再使用這個包中提供的命令

  • 如今:無需安裝腳手架包,就能夠直接使用這個包提供的命令

3.4 補充說明

推薦使用:npx create-react-app my-app

npm init react-app my-app
yarn create react-app my-app

yarn 是 Facebook 發佈的包管理器,能夠看作是 npm 的替代品,功能與 npm 相同
yarn 具備快速、可靠和安全的特色
初始化新項目:yarn init
安裝包: yarn add 包名稱
安裝項目依賴項: yarn
其餘命令,請參考yarn文檔

3.5 在腳手架中使用react

第一步:導入 react 和 react-dom 兩個包

import React from 'react'  
import ReactDOM from 'react-dom'

第二步:調用 React.createElement() 方法建立 react 元素。

第三步:調用 ReactDOM.render() 方法渲染 react 元素到頁面中。

4 jsx的基本使用

4.1 jsx簡介

JSX 是 JavaScript XML 的簡寫,表示在 JavaScript 代碼中寫 XML(HTML) 格式的代碼。

優點:聲明式語法更加直觀、與HTML結構相同,下降了學習成本、提高開發效率

JSX 是 React 的核心內容

4.2 使用步驟

第一步:使用 JSX 語法建立 react 元素

let h1 = <h1>hello React</h1>;

第二步:使用 ReactDOM.render() 方法渲染 react 元素到頁面中

ReactDOM.render(h1,document.getElementById("root"));

4.3 注意點

  • React元素的屬性名使用駝峯命名法

  • 特殊屬性名:class -> className、for -> htmlFor、tabindex -> tabIndex 。

  • 沒有子節點的React元素能夠用 /> 結束 。

  • 推薦:使用小括號包裹 JSX ,從而避免 JS 中的自動插入分號陷阱。

// 使用小括號包裹 JSX 
const dv = (
	<div>Helo JSX</div>
)

問題:爲何腳手架中可使用 JSX 語法?

JSX 不是標準的 ECMAScript 語法,它是 ECMAScript 的語法擴展
須要使用 babel 編譯處理後,才能在瀏覽器環境中使用
create-react-app 腳手架中已經默認有該配置,無需手動配置
編譯 JSX 語法的包爲:@babel/preset-react

5 jsx使用js表達式

5.1 嵌入表達式

數據存儲在JS中

語法:{js表達式}

注意:語法中是單大括號,不是雙大括號

const name = 'Jack'
const dv = (
<div>你好,我叫:{name}</div>
)

5.2 注意點

單大括號中可使用任意的 JavaScript 表達式

JSX 自身也是 JS 表達式

const h1 = <h1>我是JSX</h1> 
const dv = (
<div>嵌入表達式:{h1}</div>
)

注意:JS 中的對象是一個例外,通常只會出如今 style 屬性中

注意:不能在{}中出現語句(好比:if/for 等)

6 jsx條件渲染

場景:loading效果

條件渲染:根據條件渲染特定的 JSX 結構

可使用if/else三元運算符邏輯與運算符來實現

import React from "react";
import ReactDOM from "react-dom";

let isLoading = true;

let load = () =>{
  if(isLoading){
    return <h2>加載中。。。</h2>
  }
  return <h2>加載成功</h2>
}

// let load = () => {
//   return isLoading ? <h2>加載中。。。</h2> : <h2>加載成功</h2>;
// };

let el = <div>{load()}</div>;

ReactDOM.render(el, document.getElementById("root"));

7 列表渲染

若是要渲染一組數據,應該使用數組的 **map() **方法

注意:渲染列表時應該添加 key 屬性,key 屬性的值要保證惟一

原則:map() 遍歷誰,就給誰添加 key 屬性

注意:儘可能避免使用索引號做爲 key

import React from "react";
import ReactDOM from "react-dom";
//定義數據
const songs = [
  { id: 1, name: "癡心絕對" },
  { id: 2, name: "像我這樣的人" },
  { id: 3, name: "南山南" },
];
//生成react元素
let arr = songs.map(v=><p key={v.id}>{v.id+"---"+v.name}</p>);
let el = <div>{arr}</div>;
//渲染
ReactDOM.render(el, document.getElementById("root"));

8 jsx樣式處理

8.1 行內樣式

<h1 style={{ color: 'red', backgroundColor: 'skyblue' }}> JSX的樣式處理</h1>

注意:屬性名稱駝峯命名,而且屬性值要用引號包裹起來

8.2 類名

// 導入樣式文件
import './index.css'
//使用
<h1 className="title"> JSX的樣式處理</h1>
相關文章
相關標籤/搜索