在我的组件getDefaultProps
中,我返回了一个像{ id: idGenerator.unique() }
这样的对象,它应该在每次方法调用时给我一个唯一的id。但是,react不会为每个实例执行getDefaultProps()
方法,而只对组件执行一次。因此,每当我使用该组件时,我都会得到相同的 not-so-unique id。
是否可以将id挂钩到每个实例的props对象中?
答案 0 :(得分:3)
来自道具的状态通常是反模式,但在这里可能有意义,例如:
var Foo = React.createClass({
getInitialState: function() {
return {
id: this.props.id || idGenerator.unique()
}
}
.....
});
只需使用this.state.id而不是道具。如果组件可能在某个时刻获得ID,则可以在componentWillReceiveProps中处理该