我很难理解Facebook的React框架中的上下文是如何工作的。
当将规范传递给React.createClass时,某些方法(特别是事件处理程序)似乎需要使用React.autoBind来“将回调绑定到组件”。其他方法(特别是render())没有这个要求,但仍然乐于引用this.props或this.state。
如果render()方法不是组件,那么它的上下文是什么?
发布于 2013-07-07 03:31:14
这是因为他们已经为内部方法(如autoBind )做了render。实际上,如果调用autoBind并传递这些方法,您将得到一个错误。
对于自定义方法,最初的想法是,您可能希望坚持您想要分配的任何上下文,但是这在0.4.x (http://facebook.github.io/react/blog/2013/07/02/react-v0-4-autobind-by-default.html)中被改变了。
基本上,因为绑定this在大多数情况下都是您想要的,从现在开始,createClass中的每个方法现在都默认为autoBind。
发布于 2013-08-04 18:57:01
在任何组件框架(不仅仅是反应)中,事件处理程序需要手动管理this引用,因为它们是作为回调函数而不是方法注册到DOM中的。在Reacti0.3中,您可以自己绑定this引用,也可以使用更高效的React.autoBind。在React 0.4中,所有事件处理程序在进入DOM的过程中都会受到框架的约束,因此您不必再考虑它了。
因此,this引用始终是对react组件实例的引用。
https://stackoverflow.com/questions/17294736
复制相似问题