2014-10-16 75 views

回答

18

我沒有使用Angular,但是閱讀上面的鏈接,似乎你正在嘗試編寫一些你不需要處理的東西。您可以在React組件層次結構中(通過this.setState())更改狀態,並且React將使您的組件重新呈現(有效地「傾聽」更改)。 如果你想從您的層次結構,然後另一部分爲「聽」你有兩種選擇:

  1. 通處理器從一個共同的母公司下(通過道具),並讓他們更新父的狀態,導致下面的層次結構父母被重新呈現。
  2. 或者,爲了避免處理程序級聯下來的處理程序爆炸,您應該查看flux pattern,它將您的狀態移動到數據存儲並允許組件觀察它們的更改。 Fluxxor plugin對於管理這個非常有用。
+2

但是,當您需要獲取使用(部分)狀態作爲url /參數的遠程數據時呢? – RnMss 2016-05-19 08:47:22

+0

@RnMss - 查看redux和reducers(http://redux.js.org/docs/basics/Reducers.html)並重新選擇(https://github.com/reactjs/reselect)。 – edoloughlin 2016-12-15 22:35:07

185

以下lifecycle methods將在狀態更改時調用。您可以使用提供的參數和當前狀態來確定是否有意義的改變。

componentWillUpdate(object nextProps, object nextState) 
componentDidUpdate(object prevProps, object prevState) 
+2

當時需要觸發的方法時在另一部件的屬性是(通過回調向上一個,經由支柱向下一個)更新,並在與所述螺旋槳的分量附加'componentDidUpdate'被處方權。謝謝你。 – 2017-04-19 04:51:29

19

我認爲你應該在組件生命週期以下使用,就好像你有一個輸入屬性,在更新時需要觸發你的組件更新,那麼這是最好的地方,因爲它會在渲染你之前調用它更新組件狀態以反映在視圖上。

componentWillReceiveProps: function(nextProps) { 
    this.setState({ 
    likesIncreasing: nextProps.likeCount > this.props.likeCount 
    }); 
} 
+0

這是教科書的方式來做到這一點,當你使用道具,是的。謝謝。 – vbullinger 2018-02-07 20:50:08