需求:当接口数据更新并获取到数据后,存入数组,如何将数据存在数组中而不会随着下一次接口数据更新而不存在?
如下代码,现在的方法只能渲染出当前接口返回的数据,之前的数据保存不到数组中。后来将获取数据的方法用定时器去调用,仍然无效。
<tableReuse2 class="item" :datalist="arrdata[0].data" :titlelist="arrdata[0].title"></tableReuse2> <tableReuse2 class="item" :datalist="arrdata[1].data" :titlelist="arrdata[1].title"></tableReuse2>
<tableReuse2 class="item" :datalist="arrdata[3].data" :titlelist="arrdata[3].title"></tableReuse2>
data () { return {
arrdata: [{}, {}, {}], // 包含了所有的工站数据,
alldata: {}, // 某一个工站数据
intervalID: '',
// 父子通信不可以直接绑定,一旦某个工站获得该数据,其余绑定该数据源的组件同样也获得数据
titlelist: {}, // 某一个工站数据的title
datalist: [] // 某一个工站数据的data
}
async getAllData () { console.log('空的数组:', this.arrdata)
const data = await this.$http.get('https://mock.apifox.cn/m1/2452239-0-default/api/alldata')
.then((response) => {
console.log('我是后端响应的数据!!', response)
return response.data
})
.catch((error) => {
console.log(error)
})
console.log('我是获取到的数组数据!!', data)
this.id = data.id
this.alldata = data
console.log('我是一个json文件的所有数据', data)
console.log('数组索引:', parseInt(this.id) - 1)
this.arrdata.splice(parseInt(this.id) - 1, 1, this.alldata)
console.log('已经放到数组中的数据', this.arrdata)
},
回答:
this.arrdata.splice(parseInt(this.id) - 1, 1, this.alldata)
没看懂你想做什么,用新的数据替换原来的某个数据?
根据你题干的描述,好像是需要按照id保存每次请求的数据,那么示例如下:
const map = {};const array = map[data.id] ?? [];
array.push(data);
map[data.id] = array;
现在 map
中就是按照id保存的数据列表
{ "1": [{title: "", data: {}}, {title: "", data: {}}, {title: "", data: {}}],
"2": [{title: "", data: {}}, {title: "", data: {}}, {title: "", data: {}}],
"3": [{title: "", data: {}}, {title: "", data: {}}, {title: "", data: {}}]
}
回答:
this.arrdata[parseInt(this.id) - 1] = { ...this.arrdata[parseInt(this.id) - 1],
...this.alldata
}
或者:
this.arrdata.push(this.alldata);
以上是 需求:当接口数据更新并获取到数据后,存入数组,如何将数据存在数组中而不会随着下一次接口数据更新而不存在? 的全部内容, 来源链接: utcz.com/p/934838.html