我知道我可以在渲染组件时传递props
。我也知道getInitialState
方法。但是问题是,getInitialState
并没有帮助,因为我的组件不知道它的初始状态。我做。所以我想在渲染时通过它。
像这样的东西(伪代码):
React.render(<Component initialState={...} />);
我知道我可以使用
prop
作为初始状态,但这闻起来像是反模式。我该怎么办?
编辑清晰度
想象一下,我有一个
CommentList
组件。到我第一次渲染它时,初始状态对应于数据库中当前注释的快照。当用户包含评论时,此列表将更改,这就是为什么它应该是state
而不是props
的原因。现在,为了呈现注释的初始快照,我应该将其传递给CommentsList
组件,因为它无法知道它。我的困惑是,我看到传递此信息的唯一方法是通过props
,它似乎是一种反模式。 最佳答案
免责声明:较新版本的React以不同的方式处理此问题。
只有永久性组件才能使用getInitialState
中的props。如果同步是您的目标,则getInitialState
中的 Prop 是一种反模式。 getInitialState
仅在首次创建组件时被调用,因此可能会引起一些错误,因为真相的来源不是唯一的。 Check this answer。
Quoting documentation:
您仍然可以:
getInitialState: function() {
return {foo: this.props.foo}
}
因为它们将是您应用的默认 Prop 。但是,只要您使用prop设置一个可能不会改变的值,就可以在
render
函数内部使用相同的prop。<span>{this.props.foo}</span>
该 Prop 不会被修改,因此每次调用
render
时都不会出现问题。编辑答案:
在这种情况下,您的初始状态不应该是 Prop ,而应该是填充评论列表的ajax调用。
关于javascript - ReactJs:如何在渲染组件时传递初始状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27928296/