react改变数组页面没有刷新如何解决


本篇内容主要讲解“react改变数组页面没有刷新如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“react改变数组页面没有刷新如何解决”吧! react改变数组页面没有刷新是因为数组的赋值是引用传递的,其解决办法:1、打开相应的文件;2、找到“data.push(obj)”;3、使用新数组“let data = […this.state.data];”即可。React 数组变化不引起视图更新

importReact,{Component}from'react';
import'./App.css';
importTodofrom'./components/todo/index'
import{Table,Button}from'element-react';
classAppextendsComponent{
constructor(props){
super(props);
this.state={
columns:[
{
label:"日期",
prop:"date",
width:180
},
{
label:"姓名",
prop:"name",
width:180
},
{
label:"地址",
prop:"address"
}
],
data:[{
date:'2016-05-02',
name:'王小虎',
address:'上海市普陀区金沙江路1518弄'
},{
date:'2016-05-04',
name:'王小虎',
address:'上海市普陀区金沙江路1517弄'
},{
date:'2016-05-01',
name:'王小虎',
address:'上海市普陀区金沙江路1519弄'
},{
date:'2016-05-03',
name:'王小虎',
address:'上海市普陀区金沙江路1516弄'
},{
date:'2016-05-02',
name:'王小虎',
address:'上海市普陀区金沙江路1518弄'
},{
date:'2016-05-04',
name:'王小虎',
address:'上海市普陀区金沙江路1517弄'
},{
date:'2016-05-01',
name:'王小虎',
address:'上海市普陀区金沙江路1519弄'
},{
date:'2016-05-03',
name:'王小虎',
address:'上海市普陀区金沙江路1516弄'
}]
}
}
render(){
return(
); } addData(){ letobj={ date:'2018-05-07', name:'小明', address:'' }; letdata=this.state.data; data.push(obj); this.setState({ data:data }); console.log(this.state); } } exportdefaultApp;

上面代码中 通过setState设置data的值发现视图并没有更新,原因是数组的赋值是引用传递的,data = this.state.data是执行data这个数组的内存,所以执行data.push(obj)实际上相当于执行了 this.state.data.push(obj),所以react的虚拟dom发现state里面的data没有变化,所以不更新视图,而这时可以使用一个新数组:

letdata=[...this.state.data];

代码改为:

importReact,{Component}from'react';
import'./App.css';
importTodofrom'./components/todo/index'
import{Table,Button}from'element-react';
classAppextendsComponent{
constructor(props){
super(props);
this.state={
columns:[
{
label:"日期",
prop:"date",
width:180
},
{
label:"姓名",
prop:"name",
width:180
},
{
label:"地址",
prop:"address"
}
],
data:[{
date:'2016-05-02',
name:'王小虎',
address:'上海市普陀区金沙江路1518弄'
},{
date:'2016-05-04',
name:'王小虎',
address:'上海市普陀区金沙江路1517弄'
},{
date:'2016-05-01',
name:'王小虎',
address:'上海市普陀区金沙江路1519弄'
},{
date:'2016-05-03',
name:'王小虎',
address:'上海市普陀区金沙江路1516弄'
},{
date:'2016-05-02',
免费云主机域名name:'王小虎',
address:'上海市普陀区金沙江路1518弄'
},{
date:'2016-05-04',
name:'王小虎',
address:'上海市普陀区金沙江路1517弄'
},{
date:'2016-05-01',
name:'王小虎',
address:'上海市普陀区金沙江路1519弄'
},{
date:'2016-05-03',
name:'王小虎',
address:'上海市普陀区金沙江路1516弄'
}]
}
}
render(){
return(
); } addData(){ letobj={ date:'2018-05-07', name:'小明', address:'' }; letdata=[...this.state.data]; data.push(obj); this.setState({ data:data }); console.log(this.state); } } exportdefaultApp;

这样data比对以后会react会检测新旧的变化而更新dom。到此,相信大家对“react改变数组页面没有刷新如何解决”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: Vue封装如何axios

这篇文章主要介绍“Vue封装如何axios”,在日常操作中,相信很多人在Vue封装如何axios问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue封装如何axios”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!1、axio…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/08 16:15
下一篇 03/08 16:15

相关推荐