首页 > 其他分享 >vue_vueRouter同组件跳转失败

vue_vueRouter同组件跳转失败

时间:2023-09-19 22:11:07浏览次数:39  
标签:... vue route params vueRouter 跳转 组件 路由

目录

场景再现

  • 现有一个Article页面, 通过/article/:id来匹配不同的文章页面, 当我需要实现跳转到上一篇或下一篇时, 即从/article/:id跳转另一个/article/:id时, 发现浏览器中只有地址变化了, 但是页面的很多组件, 包括文章内容都没有刷新,

资料查询

  • 这个问题在vue-router的官方文档的动态路由匹配_响应路由参数的变化里有过说明:

    • 使用带有参数的路由时需要注意的是,当用户从 /users/johnny 导航到 /users/jolyne 时,相同的组件实例将被重复使用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会被调用

      要对同一个组件中参数的变化做出响应的话,你可以简单地 watch $route 对象上的任意属性,在这个场景中,就是 $route.params

      • const User = {
          template: '...',
          created() {
            this.$watch(
              () => this.$route.params,
              (toParams, previousParams) => {
                // 对路由变化做出响应...
              }
            )
          },
        }
        
    • 或者,使用 beforeRouteUpdate 导航守卫,它也可以取消导航:

      • const User = {
          template: '...',
          async beforeRouteUpdate(to, from) {
            // 对路由变化做出响应...
            this.userData = await fetchUser(to.params.id)
          },
        }
        

解决

  • 通过watch监听$route.params的变化, 如果发生变化那么就重新执行数据初始化

    • watch(
        () => $route.params,
        () => {
           // 数据初始化
           init()
        }
      )
      

标签:...,vue,route,params,vueRouter,跳转,组件,路由
From: https://www.cnblogs.com/isAyi/p/17715966.html

相关文章

  • Vue之与后端交互的三种方式、显示小电影案例、计算属性、监听属性、Vue生命周期、组件
    与后端交互的三种方式后端写了一堆接口前段会了前后端要打通===》从前端发送ajax===》核心:用js发送http请求,接收返回原生js,可以开启可以开启ajax,但是原生js开启,比较麻烦,需要做浏览器兼容,有坑(基本不写)jq,写了个兼容所有浏览器的$.ajax(),不仅仅有ajax,还封装了很多d......
  • vue-组件
    1.组件的介绍和使用组件中是可以套组件的组件就是:扩展HTML元素,封装可重用的代码,目的就是复用例如:有一个轮播图,可以在很多页面中使用,一个轮播有js,css,html组件把js,css,html放到一起,有逻辑,有样式,有html组件的分类:-全局组件:可以放在根中,可以在所有组件中使用-局......
  • vue 是先渲染 template 还是 script 呢?
    在Vue中,模板(template)和脚本(script)是同时被处理的,而不是按顺序渲染的。Vue的渲染流程如下:1.解析模板:Vue首先会解析模板中的HTML结构,并识别出模板中的指令和插值表达式。2.创建虚拟DOM:基于解析的模板,Vue会创建一个虚拟DOM树。3.执行脚本:Vue会执行组件实例的脚本部分,其中包括生命周......
  • vue 实现input框的宽度自适应?
    要实现Vue中input框的宽度自适应,可以使用CSS的`width`属性和Vue的数据绑定来实现。下面是一个简单的示例:1.在Vue组件的模板中,使用一个div包裹input框,并为该div设置一个类名,例如:```html<template> <divclass="input-wrapper">  <inputtype="text"v-model="inputValue"> ......
  • 跳转到应用市场下载
    ps:自用的,在此简单记录 //判断应用市场judeBrand(){constuserAgent=navigator.userAgent.toLowerCase()constisIphone=userAgent.match(/(iphone|ipad|ipod)/i);constisHuawei=userAgent.match(/huawei/i);constisHonor=userAgent.match(/honor/i......
  • HarmonyOS 管理页面跳转及浏览记录导航
    历史记录导航使用者在前端页面点击网页中的链接时,Web组件默认会自动打开并加载目标网址。当前端页面替换为新的加载链接时,会自动记录已经访问的网页地址。可以通过forward()和backward()接口向前/向后浏览上一个/下一个历史记录。在下面的示例中,点击应用的按钮来触发前端页面的后......
  • Vue源码学习(七):合并生命周期(混入Vue.Mixin)
    好家伙, 1.使用场景现在来,来想一下,作为一个使用Vue的开发者,假设现在我们要使用created(),我们会如何使用1.1. .vue文件中使用<template><div><h1>{{message}}</h1></div></template><script>exportdefault{created(){this.message='......
  • HBuilder打包vue2.0项目生成的APK空白(已解决)
    1、config下面的index.js中bulid模块导出的路径,因为index.html里边的内容都是通过script标签引入的,而路径不对,打开肯定是空白的。先看一下默认的路径。build:{//Templateforindex.html//Paths需要修改的是这里的路径index:path.resolve(__dirname,'........
  • springMvc页面跳转---重定向和转发
    准备工作1.导入json依赖点击查看代码<!--jsp需要依赖!jstl--><dependency><groupId>jakarta.servlet.jsp.jstl</groupId><artifactId>jakarta.servlet.jsp.jstl-api</artifactId><version>3.......
  • vue2.0 项目创建和配置
    项目的框架概述:前端:1、采用vue2.02、采用elementui后端:1、Jave一、前端1、创建项目vuecreateweb_admin创建成功后的项目结构2、安装elementui指定版本[email protected]、在main.js入口文件引入elementui插件importVuefrom'vue'importAppfro......