2016-03-01 50 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! 

,因爲你有一個問題,如果你問你的代碼,我相信有很多解決方法。

相關問題