Javascript 为什么在更新存储之后,组件不';t改变(反应重复)

Javascript 为什么在更新存储之后,组件不';t改变(反应重复),javascript,reactjs,ecmascript-6,redux,react-redux,Javascript,Reactjs,Ecmascript 6,Redux,React Redux,我有一个组件,它在更新存储后不会更改数据 类RenderComments扩展组件{ 注释(){ 返回此.props.comments.map((comment)=>{ if(comment.hasComments===true){ 返回( )//返回 } });//this.props.comments.map() }//注释解析 render(){ 返回( {this.commentsParse()} )//返回 }//渲染 }//RenderComments 函数MapStateTops

我有一个
组件
,它在更新
存储后不会更改数据

类RenderComments扩展组件{
注释(){
返回此.props.comments.map((comment)=>{
if(comment.hasComments===true){
返回(
)//返回
} 
});//this.props.comments.map()
}//注释解析
render(){
返回(
{this.commentsParse()}
)//返回
}//渲染
}//RenderComments
函数MapStateTops(状态){
返回{
评论:国家
}
}
导出默认连接(MapStateTops)(RenderComments)您的减速机在几个级别上都非常错误。它没有遵循不可变地更新数据的要求

首先,您不应该在reducer函数之外维护单独的
allUserComments
数组

其次,您不应该使用
.push()
来变异数组-您应该使用
.concat()
来返回一个也包含添加项的新数组

第三,您还将在减速器中生成一个新的ID值

这些都不遵循“纯函数”的原则,也不遵循还原器中的不可变更新。由于您直接改变状态并保持相同的数组引用,这几乎肯定会阻止组件正确更新

有关更多信息,请参阅,以及章节。

您的减速机在几个级别上都非常错误。它没有遵循不可变地更新数据的要求

首先,您不应该在reducer函数之外维护单独的
allUserComments
数组

其次,您不应该使用
.push()
来变异数组-您应该使用
.concat()
来返回一个也包含添加项的新数组

第三,您还将在减速器中生成一个新的ID值

这些都不遵循“纯函数”的原则,也不遵循还原器中的不可变更新。由于您直接改变状态并保持相同的数组引用,这几乎肯定会阻止组件正确更新


有关更多信息,以及部分,请参见。

显示
createNewComment
的内容。我们可以查看发送添加注释的代码吗?显示
createNewComment
的内容。我们可以查看发送添加注释的代码吗?