2016-03-01 49 views
1

所以在下面的例子中,当你点击按钮时,为什么log.added未定义?为什么React组件函数失去它们的属性?

var log = function(){ 
    console.log("X"); 
}; 

log.added = true; 

App = React.createClass({ 
    log: log, 
    showLog(){ 
    this.log(); // X 
    console.log(this.log.added); // undefined 
    }, 
    render(){return (
    <button onClick={this.showLog}>Log</button> 
)} 
}); 

回答

1

只要函数被反弹,这就是React的createClass函数的作用。这里的源代码的相关部分,如果你想看看:https://github.com/facebook/react/blob/master/src/isomorphic/classic/class/ReactClass.js#L488

但是我们可以在控制台重现此行为容易不够:

function x() {} 
x.prop = 'foo' 
var o = { x: x } 
o.x.prop // "foo" 
var y = o.x 
y.prop // "foo" 
var z = o.x.bind(o) 
z.prop // undefined <-- rebound prop no longer exists! 

,因为你有一个问题,如果你问你的代码,我相信有很多解决方法。

相关问题