我知道我可以在渲染组件时传递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/

10-12 00:09
查看更多