关于异步数据的问题,push后不显示数据
使用的uni-app vue页面
父组件
<view>
<view @click="click(mapData.marker)"></view>
</view>
data() {
return {
mapData: {}
}
},
onLoad() {
this.getData()
},
methods: {
getData() {
// 获取数据
async getData() {
this.mapData = await getmapData().then(res=> {
//getmapData调用了异步封装的uni.request
return res.data.data
})
},
},
click(data) {
uni.navigateTo({
url:'./stores/index?marker=' + encodeURIComponent(JSON.stringify(data))
})
}
}
子组件
<template>
<showOne :data="data"></showOne>
</template>
data() {
return {
data: []
}
},
onLoad(data) {
console.log(JSON.parse(data), "打印有数据")
this.data = JSON.parse(data)
},
子组件的子组件
props: ['data'],
data() {
return {
covers: [],
};
},
mounted() {
this.dataDis()
},
methods:{
dataDis() {
this.data.map((item, index) => {
this.covers.push({
id: item.id,
title: item.title,
latitude: item.latitude,
longitude: item.longitude
})
})
console.log(this.covers, "打印无数据,见下图");
}
}
求解答...为什么最后打印会没有数据,length为0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试在孙组件监听
data
变化:还有就是无需返回值的迭代尽量使用
forEach
而非map
,前者性能较优,虽然差距通常不大,不过要藏拙。可以从由5条数据变为0条数据找原因。打印的时候应该确实是有5条数据的,展开后获取的是最新的内容,可以在打印的时候做一个副本,看看数据是不是正确的