vue相同路由传不同参数组件刷新和组件接收路由参数问题

本文探讨了在Vue和vue-router环境下,如何根据不同路由参数动态更新二级路由页面内容及过渡效果。介绍了三种方法:中间路由替换、使用v-if重新渲染组件、通过修改组件key值强制刷新。并解释了$router和$route的区别,以及query和params传参的用法。

用uve和vue-router开发移动页面时,在一个二级路由页面想根据不同的参数展示不同的内容,并且有过渡效果:
在网上搜罗了一下监听路由参数变化然后刷新组件的方式有好多种

  • 1,为相同路由跳转进行中间路由替换(全局守卫进行拦截,这种方法我没试)

  • 2,使用v-if重新渲染当前页面组件,大体在data中设置一个boolean变量,然后定义一个reload方法,在方法中动态改变
    boolean变量的值。需要重新渲染组件的时候只要调用 下reload方法就可以。

  • 3,最简单快速的方法:
    利用vue组件中的key值来强制刷新(可以自行去查官方文档 )

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

    监听组件刷新问题结束后,第二个就是滑动时改成路由参数,在滑动方法中增加

    this.$router.push({path:'subNews',query:{newsId: this.newsId}})
    这里就会用到路由中query 和params传参的区别

    首先说明下 $router$route 的区别
    - $router : 是路由操作对象,只写对象
    - $route : 路由信息对象,只读对象

在router-view 组件内部用
console.log(this.$route.query.newsId)

到此问题解决

Vue项目里,使用路由`back`返回时接收参数,可利用`query`参达成。`query`参是把参数放在URL上,刷新页面后参数依旧存在[^2]。 ### 1. 配置路由 首先,在`index.js`文件中配置路由,此文件专门用于创建整个应用的路由器。以下是示例代码: ```javascript // 该文件是专门用于创建整个应用的路由器 // 第一步引入插件(本质是一个构造函数) import VueRouter from 'vue-router'; // 引入一下用到的组件 import About from '../components/About'; // 第二步创建router实例对象并暴露 export default new VueRouter({ routes: [ { // path是路径 path: "/about", // 跳转的组件 component: About } ] }); ``` ### 2. 在跳转前页面参数 假设在某个页面要跳转到`about`页面并参数,示例代码如下: ```vue <template> <button @click="goBackWithParams">返回并参数</button> </template> <script setup> import { useRouter } from 'vue-router'; const router = useRouter(); const goBackWithParams = () => { router.back({ query: { id: 123, name: 'example' } }); }; </script> ``` ### 3. 在返回接收参数的页面获取参数 在返回后接收参数的页面(例如`about`页面),使用`useRoute`来获取参数,示例代码如下: ```vue <template> <!-- 页面内容 --> </template> <script setup> import { useRoute } from 'vue-router'; const route = useRoute(); console.log(route.query.id, '页面接收到的值'); console.log(route.query.name, '页面接收到的名称'); </script> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值