91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

react實現pure render時bind(this)隱患需注意!

發布時間:2020-09-25 22:16:44 來源:腳本之家 閱讀:131 作者:楊川寶 欄目:web開發

pure render 我就不多說了,附上我另一片文章鏈接 react如何性能達到最大化(前傳)

不論你用不用immutable,只要你想達到pure render,下面值得你注意!

一天我和往常一樣,開開心心得寫著react,用著@pureRender,

export default class extends Component {
...
 render() {
  const {name,age} =this.state;
  return (
   <div>
    <Person name={name} age={age} onClick={this._handleClick.bind(this)}></Person>//bug 所在
   </div>
  )
 }
...
}

發現一個問題,對于Person這個子組件來說,在父組件re-render的時候,即使Person得前后兩個props都沒改變,它依舊會re-render,即使用immutable.js也不好使。

原來啊,父組件每次render,_handleClick都會執行bind(this) 這樣_handleClick的引用每次都會改,所以Person前后兩次props其實是不一樣的。

那怎么辦?把bind(this)去掉?不行 還必須得用

真正的答案是 讓父組件每次render 不執行bind(this),直接提前在constructor執行好,修改之后

export default class extends Component {
 constructor(props){
  super(props)
  this._handleClick=this._handleClick.bind(this)//改成這樣
 }
 render() {
  const {name,age} =this.state;
  return (
   <div>
    <Person name={name} age={age} onClick={this._handleClick}></Person>
   </div>
  )
 }
...
}

參考:React.js pure render performance anti-pattern

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

木兰县| 香河县| 邹城市| 沙洋县| 儋州市| 桂林市| 许昌县| 东山县| 申扎县| 宜宾市| 四会市| 舒城县| 若羌县| 兴国县| 新龙县| 寻甸| 浙江省| 黔东| 天长市| 临湘市| 遂溪县| 噶尔县| 仲巴县| 普定县| 神农架林区| 治多县| 沙湾县| 兰州市| 台北市| 临潭县| 洪雅县| 舒城县| 西贡区| 深圳市| 司法| 门头沟区| 丹棱县| 昌平区| 舞阳县| 满洲里市| 黄龙县|