课程名称:vue3.0实现todolist
章节名称:
讲师姓名:五月的夏天
课程内容(概述)
1、讲解如何实现路由传递参数,useRouter
,useRoute
、query
、params
的区别以及如果使用
介绍
vue3
中的传参方式和vue2
中一样,都可以用query和params传参。对比vue2
,vue2
中是有this
的,vue3
是在setup
中进行的,且要引入useRoute
和useRouter
。
query
传递过来的都是字符串类型,会在地址栏上显示;params
传递的参数不会在地址栏中显示,刷新会丢失
query
使用path
和name
都可以,params
只能使用name
配置
修改views
目录下的About.vue
文件
<template> <div> -------------------------- About页面--这是query传递的参数:{{ pid }} <button type="button" @click="onRet">返回上一页</button> -------------------------- </div> </template> <script> import { defineComponent, ref } from 'vue' import { useRouter, useRoute } from 'vue-router' export default defineComponent({ name: 'About', setup() { const pid = ref(null) // 全局路由对象 const router = useRouter() // 当前路由对象 const route = useRoute() // 接收路由参数pid--query方式 // pid.value = route.query.pid // 接收路由参数pid--params方式 pid.value = route.params.pid const onRet = () => { router.back() } return { pid, onRet } } }) </script>
问题
使用params
方式传参报错Discarded invalid param(s) “pid“ when navigating
路由文件需要配置上形参pid
// router/index.js { path: '/about/:pid', name: 'About', component: About }
学习截图