关于vue-router,进入同一地址view不刷新的问题

子组件的暂时的内容都是一样,所以就请求了同一个组件,但是发现只有第一次发送了请求,后来再点击就不发送了,子组件中的事件请求在created中执行,请问有什么解决方法吗?

//点击按钮进入子页面
 panel(index, row) {
        this.index = index;
        if (this.selected == 'saved') {
          this.$router.push(
            {
              name:'inspectionPop',
              query:{
                name: 'name',
                title:'编辑',
                id:row.id,
              },
            }
          );
        }else if(this.selected == 'reject'){
          this.$router.push(
            {
              name:'inspectionPop',
              query:{
                name: 'name',
                title:'被退回',
                id:row.id,
              },
            }
          );
   }
//子路由:接收id参数,并发送请求
created(){
      console.log(this.$route.query.id);
      if(this.$route.query.id !=''){
        this.getPanel(this.id)
      }
      this.getPersonList()
},
阅读 2.2k
2 个回答

// 子组件
使用beforeRouteUpdate, 可以在组件被复用时候调用

  beforeRouteUpdate (to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
    
     if(to.query.id !=''){
        this.getPanel(this.id)
      }
      this.getPersonList()
  },

方案一,给组件添加一个key属性,每次值不一样。
方案二,观察@route。

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