关于Vue组件复用问题的描述与解决

问题描述:

两个页面都需要“根据地图标注的位置获取经纬度”,所以就自然而然的要封装一个组件,但是这个时候问题就来了,两个页面单独使用都没什么问题,但是当A页面切换到B页面时问题就出现了,A页面可以正常打开显示,但是B页面就显示一片空白,但是打开控制台后可以发现,貌似又是渲染上了的。

问题原因:

经过查看其他大佬们的博文发现,原因是当两个页面都渲染同一个路由,组件的生命周期方法不会在被调用,组件会被重用,显示上一个路由渲染出来的(我看过以后也是豁然大明白,因为之前我也封装过几个组件,但是都没有出现过问题,原来是之前那几个都没有调用生命周期)

问题解决:

在router-view上加上唯一的key值,保证当路由来回切换时都会被重新触发生命周期,确保组件被重新初始化

 <router-view :key="key"/>

computed: {
    key() {
      return this.$route.name !== undefined ? this.$route.name + +new Date() : this.$route + +new Date()
    }
  }

我这里只涉及到问题如何解决,如果想要看更详细的就在百度上搜“vue 组件不能复用”,至于为啥不直接贴链接,因为我不想贴

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值