11-Vue:路由(2)

1.声明式导航–跳转传参

在跳转路由时,可以给路由对应得组件内传值;
在router-link上得to属性传值,语法:

/path?参数名=值
/path/值–需要对路由对象提前配置 path:‘/path/:参数名’

对应页面组件接收传递过来得值:

$route.query.参数名
$route.params.参数名

1:Home.vue中书写router-link组件 ,传递参数

<router-link to="/detail?user=妞妞">hello--妞妞</router-link>

<router-link to="/mydetail/贝贝">hello--贝贝</router-link>

2:路由配置

const routes = [
  {
    path: '/detail',
    component:Detail
  },
  {
    path: '/mydetail/:users',
    component:Detail
  },
 ]

3:Detail.vue组件中接收参数

<script>
export default {
  created() {
    //可以操作data中的数据
    console.log(this.$route.query)
  },
}
</script>
//MyDetail.vue
<script>
export default {
  created() {
    console.log(this.$route.params)  //{users: '贝贝'}
  },
}
</script>

2.路由模式设置

修改路由在地址栏的模式
hash路由 http://localhost:8080/#/home 默认
history路由 http://localhost:8080/home (上线需要服务端支持,否则找的是文件夹)
在这里插入图片描述

3.编程式导航

使用js代码实现路由跳转

//语法
this.$router.push({
  path:"路由地址",
  name:"路由名"
})

1:路由规则中,给路由起名字

const routes = [
  {
    path: '/home',   //路由地址
    // redirect:'/find',
    name:"home",  //给路由起名字
    component:Home
  },
  {
    path: '/part',   //路由地址
    name:'part',
    component:Part
  },
  {
    path: '/find',   //路由地址
    name:'find',
    component:Find
  },
  ]

2:组件中跳转 Find.vue

<template>
  <div>
    <p @click="tzHome">首页</p>
  </div>
</template>

<script>
export default {
  methods: {
    tzHome() {
      // this.$router.push('/home')

      this.$router.push({
        name: 'home',
        // path: '/home',
      })

      // 注意:虽然用name跳转,但是url的hash值还是切换path路径值
    },
  },
}
</script>

4.编程式导航–跳转传参

this.$router.push({
   path:"路由路径",
   name:"路由名",
   query:{
     "参数名":值
   },
   params:{
     "参数名":值
   }
})

对应的路由接收  $route.query.参数名 
              $route.params.参数名 
<template>
  <div>
    <p @click="toDetail">hello-妞妞</p>
    <p @click="toMydetail">hello-我的贝贝</p>
  </div>
</template>

<script>
export default {
  methods: {
    toDetail() {
      this.$router.push({
        path: '/detail',
        query: {
          user: 'hello',
        },
      })
    },
    toMydetail() {
      // path会自动忽略params
      this.$router.push({
        name: 'mydetail',
        params: {
          users: 'hello贝贝',
        },
      })
    },
  },
}
</script>

5.嵌套路由

在现有的一级路由下,再嵌套二级路由
1:创建需要用的所有组件

src/views/Find.vue 发现音乐

src/views/My.vue 我的音乐

src/views/second/Recommend.vue 发现音乐/推荐页面

src/views/second/Ranking.vue 发现音乐/排行榜页面

src/views/second/SongList.vue 发现音乐/歌单页面

2:router.js中配置二级路由

3:App.vue中写router-view实现发现音乐和我的音乐的切换

​ Find.vue中写router-view实现Recommend.vue,Ranking.vue,SongList.vue的切换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值