关于异步数据的问题,push后不显示数据

发布于 2022-09-13 01:22:26 字数 1435 浏览 33 评论 0

使用的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

逆光下的微笑 2022-09-20 01:22:26

试试在孙组件监听 data 变化:

watch: {
    data(){
        this.dataDis();
    }
}

还有就是无需返回值的迭代尽量使用 forEach 而非 map,前者性能较优,虽然差距通常不大,不过要藏拙。

戏剧牡丹亭 2022-09-20 01:22:26

可以从由5条数据变为0条数据找原因。打印的时候应该确实是有5条数据的,展开后获取的是最新的内容,可以在打印的时候做一个副本,看看数据是不是正确的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文