2015-08-28 122 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'); 
} 
相关问题