采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
<p onClick={this.clickHandler1.bind(this)}>测试</p>
关于bind(this)为什么不建议直接写在元素上,个人理解如下:
当前所在组件渲染一次,bind(this)就执行一次(并不是点击一次执行一次),bind(this)每次执行都会生成一个新的函数,在react中,元素或者组件是否渲染看的是props和state数据是否有更新,所以新的函数会造成子元素或者子组件的不必要的渲染。
请问老师,这样理解有问题吗?
正解,并不是点击一次执行一次
在react中,元素或者组件是否渲染看的是props和state数据是否有更新,所以新的函数会造成子元素或者子组件的不必要的渲染 —— 这句话我没太理解你表达的意思。
其他的没问题。
class TestComponent extends React.Component { render() { return (<div> <button onClick={this.props.onClick}> 点击 </button> </div>); } } class LoggingButton extends React.Component { handleClick() { console.log('this is:', this); } render() { return ( <TestComponent onClick={this.handleClick.bind(this)}/> ); } } 每次渲染 LoggingButton 时都会创建不同的回调函数, 如果回调函数作为 prop 传入子组件时,这些组件可能会进行额外的重新渲染
嗯呢,你描述的没错,会有这个问题。
登录后可查看更多问答,登录/注册
面向1-3年前端的框架及项目面试“刚需内容”
4.7k 3
3.2k 11
1.6k 11
1.8k 11
1.7k 11
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号