【发布时间】:2016-02-03 17:13:42
【问题描述】:
我正在用 react+redux 构建一个小博客,我不知道我应该如何在博客文章下回复 cmets。 我正在为一篇看起来像这样的博客文章获取 cmets 结构。
"[
{"_id":"5676ed8b9104691f3b85b687",
"content":"Lorem",
"creator":"Admin",
"replies":[
{
"_id":"5676ede4b7a9044c3c1d9641",
"content":"Ipsum",
"creator":"Admin",
"replies":[
{
"_id":"5676eec224ab8fe23c7ce4c6",
"content":"Dolor",
"creator":"Admin",
"replies":[]
},
{
"_id":"5676eeda1c0e3d093d1f90a0",
"content":"Sit",
"creator":"Admin",
"replies":[]
}
]
},
{
"_id":"5676ee5b4b03bbac3c1f7544",
"content":"Amet",
"creator":"Admin",
"replies":[]
},
{
"_id":"5676ee91c43c05c63c319ace",
"content":"Sup",
"creator":"Admin",
"replies":[]
}
]},
{...}
]
如何将它存储在 ImmutableJS 状态,以便我可以轻松地根据他们的 _id 添加回复到 cmets?此外,cmets 必须是可迭代的,因为我之后会将它们渲染到评论树中,但我认为只要使用 ImmutableJS 数据结构,这应该不是问题。基本上我不知道我应该如何在我的减速器中实现这个功能。
[REPLY_COMMENT]: (state, { payload }) => {
const { _id, comment } = payload
let newState = ???
return newState
}
编辑
这里是jsbin,展示了我想要实现的目标。我只是希望能够回复cmets而已
【问题讨论】:
-
我不太明白您的问题,您可以使用
Immutable.fromJS方法将上面的可变Array与嵌套的Objects转换。你问的是这个吗?这将生成一个Immutable.List,其中Immutable.Map作为评论项的数据类型。 -
我添加了jsbin,请看一下。我知道我可以使用
Immutable.fromJS,但是如何将数据添加到特定的评论回复中呢?想象一下,您正在博客下构建 cmets 部分,您会选择什么方法和ImmutableJS数据结构?
标签: javascript reactjs immutability redux immutable.js