2015-10-26 99 views
0

我正在使用具有嵌套注释的React发表评论功能。用户可以选择查看对评论的回复,方法是单击“查看回复”。子浏览/隐藏是评论框状态的一部分。用户也可以发布全新的评论。用反应记住状态

我的问题是,当您发布新评论时,它会折叠当前展开的所有评论。发布新评论会导致程序获取所有主要评论,并重新呈现评论。

我怎样才能使他们的状态完好无损地反应“记住”旧评论?

在旁注:我有一个喜欢评论和喜欢的类似实现并不会导致React创建全新的评论,即使我也会在用户喜欢评论后取回所有评论。另一件可能有助于回答我主要问题的事情是,如何做出反应决定完全重新创建组件还是仅使用更新的道具来更新组件?

+0

反应有决定什么是不同的,取代它需要你应该看看他们是如何做到这一点的虚拟DOM ..你有一个商店或任何你正在使用的状态? (通量模式) –

+0

是的,我使用助焊剂。当发布新评论时,我更新主评论商店。 – Daniel

+0

您的主评论商店是否有一系列评论,并且您为每个评论提供了一个子组件? –

回答

0

反应总是寻找旧道具和新道具和状态之间的变化,只会呈现差异。

如果您想要记住子记事的内容,最好将它们存储在某处并将它们作为道具传递。状态(几乎是由定义)不是为了记忆。

我认为当您重新渲染安装的组件时,状态不会丢失。所以你可以传递一个支持view/hidden的道具,并使用css styling/classnames来显示/隐藏元素。

如果您的顶层组件在隐藏子画面时甚至没有渲染它们,那么它们将被删除并且状态会丢失。

合这是有道理的

+0

要增加这一点,除了道具和状态的变化,上下文的变化也可以触发更新。 –