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
的内容。我们可以查看发送添加注释的代码吗?