React學(xué)習(xí)筆記2

1.render函數(shù)對于props和state必須是純函數(shù)

render函數(shù)不能改變props和state的屬性,如果在render中調(diào)用setState則會陷入死循環(huán)
問題容易出現(xiàn)在事件綁定中onClick={this.handleClick(event)},這個函數(shù)就會直接執(zhí)行,可能會修改state或props,此時應(yīng)該使用箭頭函數(shù)onClick={()=>this.handleClick(event)}

2.受控組件和非受控組件

  • 受控組件
    每當(dāng)表單的狀態(tài)變化時,都會被寫入到組件的state中,消除了組件的局部狀態(tài),由組件的state來統(tǒng)一管理
  • 非受控組件
    一個表單組件沒有value屬性,可以通過defaulValue設(shè)置默認(rèn)值,需要使用ref props來訪問DOM元素,如果ref訪問的是自定義組件,則返回的是組件的實例,可以通過findDOMNode來獲取DOM元素
    受控組件必須要綁定change事件,否則無法將輸入值改變組件state

3.CSSModule

  • 樣式默認(rèn)局部
    默認(rèn)樣式是局部的,也就是
:local(.normal){
}

全局樣式可以定義為

:global(.btn){
}
:global{
}
  • CSS Modules只會轉(zhuǎn)變類選擇器

4.React Router Redux

  • 業(yè)務(wù)邏輯和路由狀態(tài)有很強(qiáng)的關(guān)聯(lián)關(guān)系,所以需要用redux來管理路由的狀態(tài)
  • 對Router組件來說,Router組件是一個方法,location作為參數(shù),返回的結(jié)果就是View視圖,它會根據(jù)當(dāng)前url的不同,渲染出不同的組件
  • 路由切換方式主要有pushState和hashChange兩種方式
  • Redux中要改變數(shù)據(jù),必須分發(fā)一個action,在路由改變的時候,也要分發(fā)一個相應(yīng)的action,由相應(yīng)的中間件來處理這一類的action,同時改變store中的狀態(tài)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容