react基礎知識總結
技術標籤:react
文章目錄
1. react入門
1.1 介紹描述
-
用於動態構建使用者介面的 JavaScript 庫(只關注於檢視)
-
由Facebook開源
1.2 React的特點
-
宣告式編碼 區別於指令式程式設計,它的特點就是我告訴計算機做什麼,但是沒有告訴你怎麼做.
-
元件化編碼
-
React Native 編寫原生應用
-
高效(優秀的Diffing演算法)
1.3 React高效的原因
-
使用虛擬(virtual)DOM, 不總是直接操作頁面真實DOM。
-
DOM Diff演算法, 最小化頁面重繪。
1.4 相關js庫
-
react.js:React核心庫。
-
react-dom.js:提供操作DOM的react擴充套件庫。
-
babel.min.js:將jsx語法程式碼轉換為js語法程式碼
1.5 虛擬dom與真實dom
// jsx 建立虛擬dom
const VDOM = React.createElement('xx',{id:'xx'},'xx')
-
虛擬DOM物件最終都會被React轉換為真實的DOM
-
我們編碼時基本只需要操作react的虛擬DOM相關資料, react會轉換為真實DOM變化而更新界。
1.6 jsx ( JavaScript XML)
-
react定義的一種類似於XML的JS擴充套件語法
-
作用: 用來簡化建立虛擬DOM
-
寫法:var ele =
Hello JSX!
-
注意1:它不是字串, 也不是HTML/XML標籤
-
注意2:它最終產生的就是一個JS物件
-
-
基本語法規則
-
遇到 <開頭的程式碼, 以標籤的語法解析: html同名標籤轉換為html同名元素, 其它標籤需要特別解析
-
遇到以 { 開頭的程式碼,以JS語法解析: 標籤中的js表示式必須用{ }包含
-
1.7 渲染虛擬dom
- 語法
ReactDOM.render(
<App />,
document.getElementById('root')
);
-
作用: 將虛擬DOM元素渲染到頁面中的真實容器DOM中顯示
-
引數說明
-
引數一: 純js或jsx建立的虛擬dom物件
-
引數二: 用來包含虛擬DOM元素的真實dom元素物件(一般是一個div)
-
1.8 案例
需求: 動態展示如下列表
import React, {Component} from 'react';
class App extends Component {
constructor(){
super(...arguments);
this.state = {
allContent: ['vue', 'react', 'angular']
}
}
render() {
return (
<div>
<h1>前端js框架列表</h1>
<ul>
{
this.state.allContent.map((item, index) => (
<li key={index}> {item} </li>
))
}
</ul>
</div>
);
}
}
export default App;
2. react 面向元件程式設計
2.1 元件三大核心屬性 state props refs
1. state
-
state是元件物件最重要的屬性, 值是物件(可以包含多個key-value的組合)
-
元件被稱為"狀態機", 通過更新元件的state來更新對應的頁面顯示(重新渲染元件)
注意:
1. 元件中render方法中的this為元件例項物件
-
元件自定義的方法中this為undefined,如何解決?
a) 強制繫結this: 通過函式物件的bind()
b) 箭頭函式
-
狀態資料,不能直接修改或更新
案例:
需求*