欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > VUE之参数传递

VUE之参数传递

2025/2/22 14:51:13 来源:https://blog.csdn.net/qq_22111417/article/details/145291855  浏览:    关键词:VUE之参数传递

1、嵌套路由

路由嵌套 children里面的path属性不加/杠,可以参考如下代码:

>> router/index.ts// 创建一个路由器,并暴露出去// 第一步:引入createRouter
import {createRouter,createWebHistory,createWebHashHistory} from 'vue-router'
// 引入一个个可能呈现组件
import Home from '@/pages/Home.vue'
import News from '@/pages/News.vue'
import About from '@/pages/About.vue'
import Detail from '@/pages/Detail.vue'
// 第二步:创建路由器
const router = createRouter({history:createWebHashHistory(), //路由器的工作模式routes:[  //一个个路由规则{path:'/home',component: Home},{path:'/news',component: News,children:[{name: 'xiangqi',path:'detail',component:Detail}]},{path:'/about',component: About},]
})export default router

2、query参数

>> pages/Detail.vue<template><ul class="news-list"><li>编号: {{query.id}}</li><li>编号: {{query.title}}</li><li>编号: {{query.content}}</li></ul>
</template><script lang="ts" setup name="Detail">import { toRefs } from 'vue';import { useRoute } from 'vue-router';let route = useRoute()//从响应式解构,会丢失响应式let { query } = toRefs(route)console.log(query)</script><style scoped>.news-list {list-style: none;padding-left: 20px;}.news-list>li{line-height:30px;}
</style>

2.1、方法一

>> pages/News.vue<RouterLink :to="`/news/detail?id=${news.id}&title=${news.title}&content=${news.content}`">{{news.title}}</RouterLink><script setup lang="ts" name="News">
import { reactive } from 'vue';
import { RouterView,RouterLink } from 'vue-router';
const newList = reactive([{id:'dasfadadadad01',title:'很好的抗癌食物',content:'西蓝花'},{id:'dasfadadadad02',title:'如何一夜暴富',content:'学IT'},{id:'dasfadadadad03',title:'震惊万万没想到',content:'明天周一'},{id:'dasfadadadad04',title:'好消息',content:'快过年了'},])</script>

2.2、方法二

<RouterLink :to="{path:'/news/detail',query:{id:news.id,title:news.title,content:news.content}}">{{ news.title }}</RouterLink>

2.3、方法三

<RouterLink :to="{name:'xiangqi',query:{id:news.id,title:news.title,content:news.content}}">{{ news.title }}</RouterLink>

3、params参数

 

>> router/index.ts     {path:'/news',component: News,children:[{name: 'xiangqi',path:'detail/:id/:title/:content?', //用于params参数占位,加?号可传可不传// path:'detail',component:Detail}]},
<template><div class="news"><!--导航区--><ul><li v-for="news in newList" :key="news.id"><!--第一种写法--><!-- <RouterLink :to="`/news/detail/${news.id}/${news.title}/${news.content}`">{{news.title}}</RouterLink> --><!--第二种写法--><RouterLink :to="{name:'xiangqi',params: {  //params不能传对象和数组id:news.id,title:news.title,content:news.content}}">{{news.title}}</RouterLink></li></ul><!--展示区--><div class="news-content"><RouterView/></div></div>
</template><script setup lang="ts" name="News">
import { reactive } from 'vue';
import { RouterView,RouterLink } from 'vue-router';
const newList = reactive([{id:'dasfadadadad01',title:'很好的抗癌食物',content:'西蓝花'},{id:'dasfadadadad02',title:'如何一夜暴富',content:'学IT'},{id:'dasfadadadad03',title:'震惊万万没想到',content:'明天周一'},{id:'dasfadadadad04',title:'好消息',content:'快过年了'},])</script>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词