this.handleClick = this.handleClick.bind(this)
this.handleClick = this.handleClick.bind(this)
默认React是有this自动绑定的,当然限于使用React.createClass创建的类组件,其他使用ES6类语法并不会绑定this环境,所以需要手动绑定this环境;了解跟多React中this问题可以参考React组件中的this,希望对你有所帮助。
其实这个问题在react
的官方文档那里写的很清楚。这样写的目的是确保handleclick
里面的this
指向的是当前这个类。那为什么要这样做呢?那是因为this
是在哪调用就指向哪的,你把那个函数当做props
传给了子组件,执行就不是发生在当前类了
首先你要知道在一个 React 组件中 this 指的是什么?
state
, props
你都无法使用的<div onClick="this.handlerClick.bind(this)"></div>
::
(我没用过, 就不说了)总之建议你再学习下 bind, call, apply
, react的 this 使用
等知识
6 回答2.4k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
函数的
this
指向是在进入执行上下文的时候才确定的,它并不是静态绑定的。但是使用
bind
,可以返回一个新的函数,当这个函数调用的时候this
指向的是传入值,例如把上一段代码稍加修改。在
react
中这样写,是为了让子组件在调用这个函数的时候this
是指向父组件的。