2017-04-21 68 views
0

this React tutorial内的按钮单击事件回调函数阵营表象组件绑定到null明确地:什么是“this”是指何时在具有“null”参数的React组件中绑定事件回调函数?

<button onClick={_this.props.toggleActive.bind(null, user.id)}>Toggle Active</button> 

然而,回调函数内部的this关键字用于访问作出反应容器组件的状态:

toggleActive: function(userId) { 
    ... 
    var newState = Object.assign({}, this.state) 
    ... 
} 

我不明白为什么这个例子在this应该等于null或者在非严格模式下是全局window对象。有人能告诉我为什么这个例子工作吗?

对应的Codepen可以找到here

+0

我不知道确切的,但从我的expirience,如果你传递null作为“上下文”的参数,它将被忽略。 – Lojka

回答

0
<button onClick={_this.props.toggleActive.bind(null, user.id)}>Toggle Active</button> 

这里你结合的方法来null,而不是instance.Hence可以 不是一个方法中访问this,因此this将无法​​正常工作。

+0

这正是我期待的,但正如我原来的问题所述,它确实有效,这让我感到惊讶。我的问题是为什么它的工作。我认为它会失败。 – Joerg

0

我有错在先,并在下面的代码不理解question.Look: -

function a(){ 
    this.x = 5; 
    this.y = function(){ 
     console.log(this.x) 
    } 
} 
var x = 20; 
var c = new a(); 
var d = c.y.bind(null); 
d(); // prints 20 and not null or undefined 

当null被作为绑定功能方面过去了,功能保留其原来的背景,即全球(定义函数d的上下文)。但是,如果在绑定函数中传递了某个上下文,则该函数将打印该上下文的“x”属性。

同样,当你通过空在

<button onClick={_this.props.toggleActive.bind(null, user.id)}>Toggle Active</button> 

上触发,toggleActive函数内部的环境是在它被定义的上下文,即UserListContainer.Hence的是能够访问其状态

+0

谢谢澄清。你有没有任何参考,它说'空'参数被绑定忽略?例如,MDN文档根本没有提及它。 – Joerg

+0

http://www.ecma-international.org/ecma-262/5.1/#sec-10.4.3 –

+0

http://stackoverflow.com/questions/29598358/binding-function-to-null –

相关问题