2015-04-21 49 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