2015-08-28 123 views
0

當有人點擊側邊菜單按鈕時,組件中的狀態發生變化(如從「紐約尼克斯」到「波士頓凱爾特人隊」)。在componentDidMount中,我有當我的某個狀態發生變化時,如何觸發一個功能?

componentDidMount() { 
     TeamStore.addChangeListener(this._onChange); 
     var knicksRef = new Firebase(this.props.baseUrl + this.state.name + "/results"); 

     this.bindAsArray(knicksRef, 'articles'); 

    } 

它基本上從狀態類別獲取數組並將其作爲數組綁定到「文章」。但是,我希望每當國家發生變化時,它就會從不同的類別中拉出來,並將其綁定到物品上。我怎樣才能做到這一點?

回答

2

ComponentDidMountas said in the doc只會被調用一次。

您想在狀態更改時執行操作。我想你會在你的_onChange方法中調用setState(),所以只需將你的邏輯換成另一種方法,並從_onChangecomponentDidMount方法中調用它。

請注意,您也可以將此邏輯置於componentDidUpdate之內,只要組件在狀態發生更改時自動進行更新,就會調用該邏輯。但它不會在第一次渲染時調用。

所以,最後,我想你應該做這樣的事情:

componentDidMount() { 
    TeamStore.addChangeListener(this._onChange); 
    this._updateKnickRef(); 
} 

_onChange() { 
    //update state here 
    this._updateKnicksRef(); 
} 

_updateKnicksRef() { 
    var knicksRef = new Firebase(this.props.baseUrl + this.state.name + "/results"); 

    this.bindAsArray(knicksRef, 'articles'); 
} 
相關問題