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

网友投稿 222 2023-06-04


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

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

不论你用不用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,即使用immutablehttp://.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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringMVC实现文件下载功能
下一篇:Bootstrap禁用响应式布局的实现方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~