專案需要使用react進行開發,故從vue與react的異同切入學習,記錄一下學習筆記
react整體的思路就是函式式,所以推崇純元件,資料不可變,單向資料流(單向繫結),當然需要雙向的地方也可以做到,比如結合redux-form;vue是響應式的思想,認為資料可變,通過watcher監聽每乙個屬性,如果有變化就更新虛擬dom。
react元件的擴充套件一般是通過高階元件,而vue元件會使用mixin。
vue內建了很多功能,而react做的很少,很多都是由社群來完成的,vue追求的是開發的簡單,而react更在乎方式是否正確
在建構函式中通過bind繫結this
在元件上使用箭頭函式
實驗特性: 通過匿名箭頭函式的方式繫結,const func = () =>
與vue的雙向繫結不同,react不推薦雙向繫結,這樣丟失了單向資料流的特性,資料不易追蹤。
react使用props傳遞function,在子元件中呼叫父元件傳入的function修改父元件的state,從而維持state->props
的單向流特性
子元件通過props.children獲得父元件填入槽的元素進行渲染,這種用法相當於vue中的預設插槽,children屬性是自帶prop
// child component
function
defaultslot
(props)
<
/div>)}
// parent component
function
(props)
父元件可以通過自定義的prop傳入react元素供子元件渲染,因為react元素本質上就是乙個物件(virtual dom)。
// child component
function
namedslot
(props)
<
/div>
"right"
>
<
/div>
<
/div>)}
// parent component, left & right is two component, it can be a react dom, too
function
(props)
right=
/>
)}
把乙個元件想象成乙個函式,props就是函式的入參,不可編輯,state就是函式內部自定義的變數,可以修改,給定入參(props)就會返回唯一的reactdom
在react中,如果是由react引發的事件處理(比如通過onclick引發的事件處理),呼叫setstate是非同步更新this.state(加入批處理佇列中,減少更新次數),除此之外的setstate呼叫會同步執行this.state(直接更新,不進行批處理)。所謂「除此之外」,指的是繞過react通過addeventlistener直接新增的事件處理函式,還有通過settimeout/setinterval產生的非同步呼叫。
該資料是否是由父元件通過 props 傳遞而來的?如果是,那它應該不是 state。
該資料是否隨時間的推移而保持不變?如果是,那它應該也不是 state。
你能否根據其他 state 或 props 計算出該資料的值?如果是,那它也不是 state。
vue和react的區別
元件 & props
事件處理
react哲學
學習react筆記
node中匯入模組 var 名稱 require 模組識別符號 node中向外暴露成員的形式 module.exports 在es6中,也通過規範的形式,規定了es6中如何匯入和匯出模組 es6中匯入模組,使用 import 模組名稱 from 模組識別符號 import 表示路徑 import f...
react獲取全域性 react學習筆記
個人之前也粗略看過react的文件,但是程式設計師最怕的就是沒有專案實操,看完後一段時間就全忘了,但是現在市面上react的使用又很多 我太難了 最近因為疫情只能呆在家裡,剛好利用這段時間搞一搞。當然也是粗略的搞,做完乙個大屏展示後,發現react上手確實比vue要難點。react沒有vue一樣的模...
React學習筆記 Props State
props是properties 屬性 效能 的縮寫,我們可以通過他把任意型別的資料傳遞給元件。大部分元件從props獲取資料並渲染 他是唯讀的!來看乙個例子 很明顯,在comment元件裡,我們通過this.props.author獲取到了hello world.裡author的值。通過獲取到了h...