2015-04-21 52 views
2

在我的組件的getDefaultProps中,我返回了一個對象,如{ id: idGenerator.unique() },它應該爲每個方法調用提供一個唯一的ID。但是,響應不會對每個實例執行getDefaultProps()方法,但對組件只執行一次。因此,無論何時使用該組件,我最終都會使用相同的不太唯一的 ID。在getDefaultProps中創建唯一的ID

是否有其他方法將id綁定到每個實例的道具對象中?

+0

它是否需要成爲道具?你有時會通過ID嗎?否則,它可能是有意義的狀態 – wgcrouch

+0

那麼,這將是一個很好的默認道具,以便我可以輕鬆地覆蓋它時,我想提供一個自定義的ID。如果這不起作用,我也會接受不同的方法。 – Taig

回答

3

從道具國家通常是一個反模式,但可能是有意義的有,例如:

var Foo = React.createClass({ 
    getInitialState: function() { 
     return { 
      id: this.props.id || idGenerator.unique() 
     } 
    } 
    ..... 
}); 

,只是使用this.state.id而不是道具。如果組件有可能在某個時候獲得ID,則可以在componentWillReceiveProps中處理該組件

+0

這絕對適合我的使用情況。謝謝! – Taig