react記錄部署

導語

React中的核心概念
1 虛擬DOM(Virtual DOM)
2 Diff算法(虛擬DOM的加速器,提升React性能的法寶)

React主要的原理
Virtual DOM 虛擬DOM;

提供了一種不同的而又強大的方式來更新DOM,
代替直接的DOM操作。
就是Virtual DOM,
一個輕量級的虛擬的DOM;
通過這個Virtual DOM去更新真實的DOM,
由這個Virtual DOM管理真實DOM的更新

?
?我想問的是:為什么通過這多一層的Virtual DOM操作就能更快呢?
?diff算法。
?React會等到事件循環結束,然后利用這個diff算法,
?通過當前新的dom表述與之前的作比較,
?計算出最小的步驟更新真實的DOM
?
?virtual dom----diff----real dom
?
?
?之前我的想法是:dom樹是元素組成的;但是在react里面就是
?Components 組件
在DOM樹上的節點被稱為元素,在這里則不同,Virtual DOM上稱為commponent。
Virtual DOM的節點就是一個完整抽象的組件,它是由commponents組成。

Components存在讓diff算法更加高效

如何呈現真實的DOM:如何渲染組件,什么時候渲染,怎么同步更新的
1,state,render;
當數據發生變化時,將會調用Render重現渲染,這里只能通過提供的setState方法更新數據。
setState({})更新數據;

React不是一個MVC框架,它是構建易于可重復調用的web組件,側重于UI, 也就是view層
其次React是單向的從數據到視圖的渲染,非雙向數據綁定(這個是很重點的問題!!)
不直接操作DOM對象,而是通過虛擬DOM通過diff算法以最小的步驟作用到真實的DOM上。
不便于直接操作DOM,大多數時間只是對 virtual DOM 進行編程

https://120.24.108.143/svn/GAMC/DevCode/MD_Dialog_XML/xml

React將DOM抽象為虛擬DOM,
虛擬DOM其實就是用一個對象來描述DOM,
通過對比前后兩個對象的差異,
最終只把'變化'的部分重新渲染,提高渲染的效率

為什么用虛擬dom,
當dom發生更改時需要遍歷 而原生dom可遍歷屬性多大231個?
且大部分與渲染無關 更新頁面代價太大


https://segmentfault.com/a/1190000012921279
https://zhuanlan.zhihu.com/p/20346379
React 源碼剖析系列 - 不可思議的 react diff
知其然更要知其所以然

JSX的注意點
注意 1: 如果在 JSX 中給元素添加類, 需要使用 className 代替 class

類似:label 的 for屬性,使用htmlFor代替
注意 2:在 JSX 中可以直接使用 JS代碼,直接在 JSX 中通過 {} 中間寫 JS代碼即可
注意 3:在 JSX 中只能使用表達式,但是不能出現 語句!!!
注意 4:在 JSX 中注釋語法:{/* 中間是注釋的內容 */}

React創建組件的兩種方式
1 通過 JS函數 創建(無狀態組件)
2 通過 class 創建(有狀態組件)
函數式組件 和 class 組件的使用場景說明:
1 如果一個組件僅僅是為了展示數據,那么此時就可以使用 函數組件
2 如果一個組件中有一定業務邏輯,需要操作數據,那么就需要使用 class 創建組件,因為,此時需要使用 state


JavaScript函數創建
注意:1 函數名稱必須為大寫字母開頭,React通過這個特點來判斷是不是一個組件
注意:2 函數必須有返回值,返回值可以是:JSX對象或null
注意:3 返回的JSX,必須有一個根元素
注意:4 組件的返回值使用()包裹,避免換行問題

function Welcome(props) {
? return (
? ? // 此處注釋的寫法?
? ? <div className="shopping-list">
? ? ? {/* 此處 注釋的寫法 必須要{}包裹 */}
? ? ? <h1>Shopping List for {props.name}</h1>
? ? ? <ul>
? ? ? ? <li>Instagram</li>
? ? ? ? <li>WhatsApp</li>
? ? ? </ul>
? ? </div>
? )
}ReactDOM.render(
? <Welcome name="jack" />,
? document.getElementById('app')
)

?// class創建的組件中 必須有rander方法 且顯示return一個react對象或者null
?class ShoppingList extends React.Component {
? constructor(props) {?
? ? super(props)
? }
? // class創建的組件中 必須有rander方法 且顯示return一個react對象或者null
? render() {
? ? return (
? ? ? <div className="shopping-list">
? ? ? ? <h1>Shopping List for {this.props.name}</h1>
? ? ? ? <ul>
? ? ? ? ? <li>Instagram</li>
? ? ? ? ? <li>WhatsApp</li>
? ? ? ? </ul>
? ? ? </div>
? ? )
? }
}

props是只讀的,無法給props添加或修改屬性
class Welcome extends React.Component {
? constructor(props) {
? ? super(props)
? }

? render() {
? ? return <h1>Hello, {this.props.name}</h1>
? }
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14968.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14968.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14968.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

cuda11.8安裝torch2.0.1

pip install torch2.0.1 torchvision0.15.2 torchaudio2.0.2 --index-url https://download.pytorch.org/whl/cu118

hot100 -- 回溯(上)

目錄 &#x1f35e;科普 &#x1f33c;全排列 AC DFS &#x1f6a9;子集 AC DFS &#x1f382;電話號碼的字母組合 AC DFS &#x1f33c;組合總和 AC DFS &#x1f35e;科普 忘記 dfs 的&#xff0c;先看看這個&#x1f447; DFS&#xff08;深度優先搜索&#xf…

百度軟件測試面試經歷,期望薪資27K

一面 1、 請為百度搜索框設計測試用例&#xff1f; 2、百度設計框上線前需要進行那些測試&#xff1f; 界面測試&#xff0c;功能測試&#xff0c;性能測試&#xff0c;安全性測試&#xff0c;易用性測試&#xff0c;兼容性測試&#xff0c;UI測試。 3、如何查看http狀態碼…

重學java 38.創建線程的方式?

It is during our darkest moments that we must focus to see the light —— 24.5.24 一、第一種方式_繼承extends Thread方法 1.定義一個類,繼承Thread 2.重寫run方法,在run方法中設置線程任務(所謂的線程任務指的是此線程要干的具體的事兒,具體執行的代碼) 3.創建自定義線程…

基于灰狼優化算法優化支持向量機(GWO-SVM)回歸預測

代碼原理 基于灰狼優化算法優化支持向量機&#xff08;GWO-SVM&#xff09;的回歸預測代碼的原理和流程如下&#xff1a; 1. **初始化灰狼群體**&#xff1a;隨機生成一定數量的灰狼&#xff0c;并初始化它們的位置和速度。 2. **初始化SVM模型參數**&#xff1a;根據問題要…

【JAVA基礎之網絡編程】UDP和TCP協議以及三次握手和四次揮手的過程

&#x1f525;作者主頁&#xff1a;小林同學的學習筆錄 &#x1f525;mysql專欄&#xff1a;小林同學的專欄 目錄 1. 網絡編程 1.1 概述 1.2 網絡編程的三要素 1.2.1 IP地址 1.2.2 InetAddress 1.2.3 端口和協議 1.3 UDP協議 1.3.1 UDP發送數據 1.3.2 UDP接收數據 1.4…

C語言——小知識和小細節18

一、力扣題目 1、題目本體 2、題解 本題目我們使用異或分組的方法來解決。可以在我之前的文章《C語言——操作符CSDN博客》中看一下異或的特點。 由于異或的運算規則為相同為0&#xff0c;不同為1&#xff0c;而且是在二進制補碼上進行操作的&#xff0c;我們可以發現的一個…

c++|多態

c|多態 1 多態的概念2 多態的定義及其實現2.1 滿足多態的條件2.2 虛函數2.3 虛函數的重寫2.4 析構函數適合加virtural嗎2.4 C11 override 和 final2.5 三個概念的對比 3 多態的原理4 抽象類4.1 概念4.2 純虛函數 1 多態的概念 多態的概念&#xff1a;通俗來說&#xff0c;就是…

2413. 最小偶倍數

題目&#xff1a; 給你一個正整數 n &#xff0c;返回 2 和 n 的最小公倍數&#xff08;正整數&#xff09;。 示例 1&#xff1a; 輸入&#xff1a;n 5 輸出&#xff1a;10 解釋&#xff1a;5 和 2 的最小公倍數是 10 。 示例 2&#xff1a; 輸入&#xff1a;n 6 輸出&a…

JS 手寫 節流throttle 防抖debounce函數

防抖debounce // 手寫防抖 function debounce(fn, delay 200) {// timer 在閉包中let timer null// 返回一個函數return function(...args) {if (timer) {clearTimeout(timer) // 清空上次的值}timer setTimeout(() > {fn.apply(this, args) // 透傳 this 和函數參數},…

【再探】設計模式—代理模式

代理是指授權代理人在一定范圍內代表其向第三方進行處理有關事務。 1 代理模式 需求&#xff1a;1&#xff09;將業務代碼與非業務代碼分離&#xff0c;在不改變代碼結構的基礎上&#xff0c;為其添加新的功能。2&#xff09;為系統中的某些操作做同一處理&#xff0c;例如進…

[實例] Unity Shader 逐像素漫反射與半蘭伯特光照

漫反射光照是Unity中最基本最簡單的光照模型&#xff0c;本篇將會介紹在片元著色器中實現反射效果&#xff0c;并會采用半蘭伯特光照技術對其進行改進。 1. 逐頂點光照與逐像素光照 在Unity Shader中&#xff0c;我們可以有兩個地方可以用來計算光照&#xff1a;在頂點著色器…

數據結構:帶頭雙向循環鏈表

目錄 前言 鏈表實現 1.定義節點 2.接口實現 1.開辟新節點 2.初始化 3.打印鏈表 4.添加節點 頭插 尾插 在pos位置之前增加節點 5.刪除節點 判空 頭刪 尾刪 刪除pos位置的節點 6.查找 7.釋放 前言 帶頭雙向循環鏈表的結構最復雜&#xff0c;一般用在單獨存儲數…

z3-加法器實驗

補碼器加減法&#xff0c;運算方法簡介 我們要知道什么是補碼的加法&#xff0c;我們為什么要用補碼的加法&#xff1f; 補碼的加法其實就是將兩個補碼形式的二進制數字直接相加&#xff0c;處理的時候忽略超出固定位數的進位。補碼的加法運算和無符號二進制數的加法操作一樣&…

【最新區塊鏈論文錄用資訊】CCF A — SP 2024 共17篇

Conference&#xff1a;45th IEEE Symposium onSecurity and Privacy CCF level&#xff1a;CCF A Categories&#xff1a;網絡與信息安全 Year&#xff1a;2024 Num&#xff1a;17 Efficient Zero-Knowledge Arguments For Paillier Cryptosystem Paillier 加密系統的有效…

基于python的網頁自動刷新工具

1.下載webdriver https://msedgewebdriverstorage.z22.web.core.windows.net/?prefix122.0.2365.59/下載Edge的瀏覽器驅動 2.安裝selenium pip install selenium4.11.1 3.寫代碼 # -*- coding: utf-8 -*- import tkinter as tk from tkinter import messagebox import thr…

【halcon】set_part 實現平移和縮放 徹悟版

背景 之前寫了一篇關于set_part 的文章 &#xff0c;確實也實現了平移和縮放。平移是對的&#xff0c;但是縮放其實有畸變。這個問題一直都困擾著我&#xff0c;知道昨天連續測試了好幾個小時&#xff0c;直到晚上11點終于完美解決。 坐標和高寬 坐標 再講set_part 之前&am…

免費擼gpt-4o和各種大模型實用經驗分享

項目 Github: https://github.com/MartialBE/one-api 先貼兩張圖&#xff1a; 說明 免費擼AI大模型,各位可以對照下面我給出的大模型記錄表來填&#xff0c;key需要自己去拿&#xff0c;國內都需要手機號驗證&#xff0c;如果你不介意。另外我在自己的博客放出免費API給大家…

模型評價指標筆記:混淆矩陣+F1+PR曲線+mAP

評價指標 二分類評價指標 混淆矩陣 TP: 正確預測為了正樣本&#xff0c;原來也是正樣本 FN: 錯誤的預測為負樣本&#xff0c;原來是正樣本 (漏報&#xff0c;沒有找到正確匹配的數目) FP: 錯誤的預測為正樣本&#xff0c;原來是負樣本 (誤報&#xff0c;沒有的匹配不正確) TN…

CIM模型

CIM 是 Esri 制圖信息模型。 它是一個地圖內容規范,用于記錄在保存、讀取、引用或打開時如何永久保留描述不同項目組件的信息。 該規范以 JSON 表示,適用于 ArcGIS 應用程序和 API 中的地圖、場景、布局、圖層、符號和樣式。 CIM 不僅限于制圖設置。 要了解屬性的組織方式以及…