【发布时间】:2018-06-01 04:30:03
【问题描述】:
我已经有了这样的状态:
this.setState({
conversation:
(
<div>
{conversation.map(element => {
if (element.id === this.props.id) {
return(
<div className="row msg_container base_sent">
<div className="col-md-10 col-xs-10">
<div className="messages msg_sent">
<p>{element.message}</p>
</div>
</div>
</div>
)
}
else {
return(
<div className="row msg_container base_receive">
<div className="col-md-10 col-xs-10">
<div className="messages msg_receive">
<p>{element.message}</p>
</div>
</div>
</div>
)
}
})}
</div>
)
})
现在我想用新信息更新它。所以添加另一个 div 到它。
类似的东西:
this.setState({conversation: previousConversation + new div})
我该怎么做?或者我需要从零开始设置一个新状态
【问题讨论】:
-
在状态中存储 jsx 似乎不是一个好主意。实际上,我以前从未见过有人这样做...
-
这应该不是问题。我认为你想要的是一个映射(考虑导入 lodash 库并使用 _.map([1,2,3], function(x) {...});)所以当它的状态改变时,react 会处理添加消息自己