react实现pure render时bind(this)隐患需注意!

这篇文章主要为大家详细介绍了值得你在react实现pure render的时候,需要注意的bind(this)隐患,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

pure render 我就不多说了,附上我另一片文章链接 react如何性能达到最大化(前传)

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

一天我和往常一样,开开心心得写着react,用着@pureRender,

 export default class extends Component { ... render() { const {name,age} =this.state; return ( 
//bug 所在
) } ... }

发现一个问题,对于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 ( 
) } ... }

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持html中文网。

以上就是react实现pure render时bind(this)隐患需注意!的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » JavaScript 教程