vue.js keep-alive下的子组件刷新

为了保存Pagination的页数而引进了keep-alive,就是在App.vue最外面加上的,但是子组件的刷新碰到了问题。

子组件的路径是/subject/:id , 我希望子组件里能捕获到每次进来的id不同,就获取新数据(数据获取放在mounted中),但是用了keep-alive,每次进来就不刷新了。
然后我想到了用watch:$route.params.id, 但是这样一来watch在进入子组件和离开的时候会被激活两次(id变化了两次),如何能让他只在进来的时候捕获id的变化呢?

如果是思路有问题,请帮忙指出,谢谢诸位

阅读 5k
3 个回答

你把Pagination的页数放在vuex里面或者自己弄个全局变量,然后存在localstorage里面也可以啊

data() {
  id: this.$route.id,
  watched: false
},
watch: {
   
    id: function (newId, oldId) {
      if (!this.watched) {
        doFetch();
      }
      this.watched = !this.watched;
    }
  },

不知道你的vue版本 在2.2.0以上的版本中是被keep-alive的组件有个activated的钩子 你可以在这个钩子里面操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题