我在我的mongo数据库中收集了我存储文章的文章,并且在每个文档中(每篇文章)我存储了评论的对象,递归地可以存储评论,所以基本上你可以评论到无限的评论。当我想在反应视图中呈现这些注释时,我将使用其中的注释对象获取文档,然后递归地映射它们并将它们的数据存储在数组内的单独数组中,以便稍后将它们呈现给视图。所以我的州看起来像这样:
this.state = {
singleComment: [
...
[id:123, replyto: 456],
[id:321, replyto: 654],
[id:789, replyto: 001],
[id:987, replyto: 002]
...
]
}
然后我映射数组以渲染视图中的每个单独的数组:
this.state.singleComment.map((comment) => {
return (
<Comment
margin={scale(comment[2] * 20 + 5)}
key={comment[0]}
name={comment[0]}
replyTo={comment[1]}
/>
)
})
然后我将每个组件的样式用于表示哪个注释是哪个父项的子项。它看起来很好,工作正常,但现在有了这个结构,我确定如何让特定父母的孩子在我想要的时候折叠。我基本上需要将onPress
prop附加到组件上,该组件将获取组件的id
,然后遍历列表并找到与{replyto
相同的id
组件。压制组件的1}}(如果replyto
与id
相同,则表示这是我需要涵盖的注释)。我希望我能很好地解释自己。为了包装它,我需要在我的评论系统中使用类似reddit的功能。
要展示的图片:
理想的行为: