前端-VUE-路由使用
路由配置时的数据交互:
配置:{ path: '/user/:id', component: User }// 动态路径参数 以冒号开头
效果:映射地址如 /user/foo 和 /user/bar 等
取值:$route.params.id
其它:
配置如/user/:username/post/:post_id时$route.params的值为{ username: '', post_id: '' }
{ path: '*'}// 会匹配所有路径,常用于客户端 404 错误
{path: '/user-*'}// 会匹配以 `/user-` 开头的任意路径
注意:/user/foo 导航到 /user/bar因为动态路由是同一个组件User,所以会组件复用,不会触发生命周期
解决:
1.对路由变化作出响应 watch: {'$route' (to, from) {}}
2.导航守卫 beforeRouteUpdate (to, from, next) {}
优先级:从上到下,依次匹配
其它示例:
{ path:'/ params /:foo /:bar' } ,//参数用冒号“:”表示
{ path:'/ optional-params /:foo?' } ,//通过添加“?”可以使参数成为可选参数
//参数后面可以跟括号中的正则表达式模式
{ path:'/ params-with-regex /:id(\\ d +)' } ,//仅当:id为所有数字时,此路由才会匹配
{ path:'/ asterisk / *' } ,//星号可以匹配任何内容
{ path:'/ optional-group /(foo /)?bar' }//通过用括号包裹并添加“?”来使路径的一部分成为可选
路由跳转的数据交互:
普通A标签转换
<router-link to="/dashboard"></router-link>
类似post,
router.push(name, params)//js版
<router-link :to="{ name: 'User', params: { userId: 123 }}">User</router-link>//html版
如:this.$router.push({name: 'test',params: {id: id}})
跳转到name为test的页面,参数是params对象{id: id},
页面刷新参数失效,取值为this.$route.params.id
类似get
router.push(path, query)
<router-link :to="{ path: '/home' , query: { userId: 123 }}">Home</router-link>//html版
如:this.$router.push({path: `/test/${code}`,query: {id: id}})
跳转到路径test的页面,参数是query对象,类似get,url变为/test/code?id=id
页面刷新参数失效,取值为this.$route.query.id
$router.go(-1)//上一页
posted on 2020-07-11 15:29 xcc_20190625 阅读(354) 评论(0) 收藏 举报
浙公网安备 33010602011771号