亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

石泉县| 望奎县| 辛集市| 新巴尔虎左旗| 喀什市| 锡林郭勒盟| 灵山县| 安吉县| 宣城市| 寿阳县| 贵州省| 信丰县| 马关县| 维西| 广州市| 车险| 武义县| 浪卡子县| 伊通| 邵武市| 茶陵县| 崇左市| 鹤山市| 龙里县| 博客| 星座| 湟源县| 河西区| 西乌| 伊宁县| 澎湖县| 孟连| 凤冈县| 卫辉市| 双城市| 德惠市| 芷江| 弋阳县| 成安县| 嘉禾县| 衡水市|