核心:元件系統,all in js,自動更新dom,三個階段,十乙個鉤子函式,更新狀態,react中的事件,可控和不可控元件不需要特殊的開發環境,使用常見ide並安裝相應的外掛程式即可,react相容ie8及以上,其他主流的瀏覽器也相容,相容性較好。
簡單來說就是all in js,將html,css全部寫到js檔案中,需要使用jsxtransfer.js進行**的轉換
元件本質上是狀態機,輸入確定,輸出一定確定
分為三個部分:初始化階段——執行中階段——銷毀階段5
初始化階段的鉤子函式:(5個鉤子函式,按照順序排列)
執行中階段:(5個鉤子函式,按照順序排列)
銷毀階段:(1個鉤子函式)
getinitalstate:初始化每個例項
setstate:更新元件狀態(就是更新元件資料,十分重要的方法)
react中不同事件物件:
通用、剪下、鍵盤、焦點、滑鼠、觸控、ui元素、滾動八種。這些都是對原生js的封裝而已,原生js中有哪些?和這些的區別是什麼?
元件協同本質上是對元件的一種組織管理方式,目的是:
1)邏輯清晰
2)**模組化
3)封裝細節
4)**可復用
1)巢狀:元件巢狀是由多個小組件共同拼湊成乙個大的元件完成乙個功能,主要體現了模組化和封裝思想
2)mixin:元件混入,將多個小組件中共同的部分抽取出來,主要實現的是**復用的思想
自定義表單元件的原因:
兩種元件:
元件可控的好處:符合react的資料流,資料儲存在state中,便於使用,便於對資料進行處理。
10.react 重的state和props之間的區別是?
11.react 的兩種元件?container和component,容器元件和展示元件?
12.容器元件的三大組成部分?
13.react中的refs屬性?
16在react16之後中新加的hooks的主要作用是什麼?
hook 這個單詞的意思是"鉤子"。
react hooks 的意思是,元件盡量寫成純函式,如果需要外部功能和***,就用鉤子把外部**"鉤"進來。react hooks 就是那些鉤子。
你需要什麼功能,就使用什麼鉤子。react 預設提供了一些常用鉤子,你也可以封裝自己的鉤子。
所有的鉤子都是為函式引入外部功能,所以 react 約定,鉤子一律使用use
字首命名,便於識別。你要使用 *** 功能,鉤子就命名為 u***xx。
下面介紹 react 預設提供的四個最常用的鉤子。
17.請問react中的fiber演算法是什麼?具體有什麼作用呢?reconciliation以fiber tree為藍本,把每個fiber作為乙個工作單元,自頂向下逐節點構造workinprogress tree(構建中的新fiber tree)。具體過程如下:1.如果當前節點不需要更新,直接把子節點clone過來,跳到5;要更新的話打個tag
2.更新當前節點狀態(props, state, context等)
3.呼叫shouldcomponentupdate(),false的話,跳到5
4.呼叫render()獲得新的子節點,並為子節點建立fiber(建立過程會盡量復用現有fiber,子節點增刪也發生在這裡)
5.如果沒有產生child fiber,該工作單元結束,把effect list歸併到return,並把當前節點的sibling作為下乙個工作單元;否則把child作為下乙個工作單元
6.如果沒有剩餘可用時間了,等到下一次主線程空閒時才開始下乙個工作單元;否則,立即開始做
7.如果沒有下乙個工作單元了(回到了workinprogress tree的根節點),第1階段結束,進入pendingcommit狀態
fiber總結:
fiber架構其實就是react自己內部實現了一套排程系統,通過某些排程策略合理地分配cpu資源,達到快速響應使用者,讓使用者覺得夠快,不阻塞使用者的互動的目標。這一套排程系統還有一點好處:
給瀏覽器一點喘息的機會,他會對**進行編譯優化(jit)及進行熱**優化,或者對reflow進行修正。
18.dva介紹一下?
dva 首先是乙個基於 redux 和 redux-saga 的資料流方案,然後為了簡化開發體驗,dva 還額外內建了 react-router 和 fetch,所以也可以理解為乙個輕量級的應用框架。
19.解決每個元件都要使用乙個div包裹後,最終造成了元件層級過深的問題的方法?fragment的作用是啥?
使用<>標籤,或者使用標籤進行包裹,在react進行jsx語法解析的時候,會自動將其清除。
20.purecompoent純元件的使用?
shouldcomponentupdate
只檢查props.color
和state.count
的變化。如果這些值沒有變化,元件就不會更新。當你的元件變得更加複雜時,你可以使用類似的模式來做乙個「淺比較」,用來比較屬性和值以判定是否需要更新元件。這種模式十分常見,因此react提供了乙個輔助物件來實現這個邏輯 - 繼承自react.purecomponent
。以下**可以更簡單的實現相同的操作:
class counterbutton extends react.purecomponent ;
} render() ))}>
count:
);}}
21.renderprops的使用,當存在自定義的元件需要自己包裹另外乙個自定義元件時,會造成包裹的元件無法顯示的問題,renderprops就相當於vue中的slot插槽。可以實現這個功能。 React 相關知識點
1 元件中get的使用 作為類的getter es6知識 class類也有自己的getter和setter,寫法如下 class component name的getter getname name的setter setname value react元件中的get的使用如下 renderfulln...
react知識點總結
1 react和vue的優勢 如何做技術選型 2 關於腳手架,用途,優勢 3 如何定義乙個react元件 4 pwa是什麼 功能 5 jsx語法規則 6 react父子元件通訊 7 如何優化乙個react專案 8 jquery和react的區別 9 什麼是單向資料流 10 函式式程式設計的好處 11...
React相關知識點
reactcss模組化內聯樣式的方案 use strict import react from react import reactcss from reactcss render swatch popover cover return this.handleclick this.state.col...