2016-03-11 68 views
0

即時閱讀和綁定(本)在reactjs混亂的Reactjs

componentDidMount: function() { 
    this.serverRequest = $.get(this.props.source, function (result) { 
     var lastGist = result[0]; 
     this.setState({ 
     username: lastGist.owner.login, 
     lastGistUrl: lastGist.html_url 
     }); 
    }.bind(this)); 
    } 

從我的理解這個綁定如果this.setState使所謂外時,this將參照正確的對象。但是,我們怎麼不需要它爲this.props.source

回答

3

因爲this.props.source是傳遞給$.get設置了一個param - 它仍然有正確的上下文,因爲它是componentDidMount方法內部執行。只有在$.get方法的回調中,上下文才會丟失,這是從jQuery庫中的某處執行的。

另一種方式來保存上下文是使用arrow function(這ES6所以你需要一個transpiler現在),這會爲你的綁定:

$.get(this.props.source, (result) => { 
    // ... 
}); 
+0

感謝。只是好奇會var self =這個作品呢? – user308553

+0

Np,是的,這是另一個解決方案 –

+0

如果你不介意讓我再問一個問題:我在看這個:'https:// jsfiddle.net/n47gckhr/1038 /',而'FilterableProductTable'有一個回調函數'handleUserInput ',其中包含一個this.setState。它將它傳遞給他的孩子,他的孩子可以用它來改變父母的狀態(FilterableProductTable)。我們怎麼沒有把這個綁定到父對象上,當this.setState中的'this'指向孩子使用這個回調的時候?謝謝 – user308553