当前位置: 首页 > Web前端 > vue.js

Axios从接口取回数组数据并遍历添加自己需要的属性

时间:2023-03-31 14:15:42 vue.js

axios从接口中取出数组数据,遍历添加自己需要的属性,数据不能满足我们自己的使用是难免的。这时候我们就需要遍历这些数据,添加我们需要的属性,然后愉快地渲染~但是这个时候经常会出现意想不到的错误:首先,我们获取到的数据,在进行模板渲染的时候,可能会报错,并且找不到新添加的某个属性。或者,当我们添加类似于复选框的检查属性时,当所选状态切换时,最初分配的属性值(例如false)不会更改,也就是说,VUE的双向数据绑定将不会触发。这个时候怎么办?提供以下两种解决方案。在给data中的数据赋值之前,先遍历接口返回的数据/*假设getList是我们获取数据的接口,返回一个数组列表返回格式:[{time:1month,price:2000},{time:2months,price:3000},{time:3months,price:4000}]模板中要渲染的数据变量:myData*/this.getList().then(res=>{//注意下面的写法会导致上面的错误~this.myData=res;this.myData.forEach(item=>{item.checked=false;})//下面的代码才是正确的解决方法res.forEach(item=>{item.checked=false;})this.myData=res;})使用vm.$set实例方法为嵌套对象添加响应式属性//语法如下:this.$set(this.someObject,'b',2)//在上面的例子中,假设我们需要在获取到接口返回的值后立即给myData赋值,那么我们可以这样做this.getList().then(res=>{this.myData=res;//立即赋值this.myData.forEach(item=>{//item.checked=false;这种方式添加的属性没有响应//正确的解决方法如下this.$sets(item,'checked',false);})})最后附上Vue响应式原理链接,深入了解响应式原理。以上内容如有错误,敬请指正。如果大家有更多更好的实现方法,欢迎补充~~