vue基础篇 12 vue-router补充

12 篇文章 0 订阅

12 vue-router补充

传递参数

类型

传递参数主要有两种类型: params和query

  • params 的类型 :

    • 配置路由格式: /router/:id
    • 传递的方式: 在path后面跟上对应的值
    • 传递后形成的路径: /router/123, /router/abc
  • query 的类型 :

    • 配置路由格式: /router, 也就是普通配置
    • 传递的方式: 对象中使用query的key作为传递方式
    • 传递后形成的路径: /router?id=123, /router?id=abc(类似于get请求)

方法

通过router-link传递

params

<template>
  <div id="app">
    <router-link
        :to="{
          path:'/params'+'/123',
        }">传递参数</router-link>
  </div>
</template>

url:http://localhost:8080/#/params/123

query

<template>
  <div id="app">
    <router-link
        :to="{
          path:'/params',
          query: {
            name:'biang',
            age:18
          }//以对象的形式作为参数
        }">传递参数</router-link>
  </div>
</template>

url:http://localhost:8080/#/params?name=biang&age=18

通过JavaScript代码传递

params

<script>
export default {
  name: 'App',
  methods:{
    toParams(){
      this.$router.push({
        path:'/params'+'/123'
        //router文件中需要将path设置为'/params/:id'
      })
    }
  },
  components: {
  }
}
</script>

url:http://localhost:8080/#/params/123

query

<script>
export default {
  name: 'App',
  methods:{
    toParams(){
      this.$router.push({
        path:'/params',
        query: {
          name:'biang',
          age:18
        }//以对象的形式作为参数
      })
    }
  },
  components: {
  }
}
</script>

url:http://localhost:8080/#/params?name=biang&age=18

接收参数

用于获取参数的两个方法都是对象

$route.params

获取通过params方法传入的参数,通过参数名获取对应的值

$route.query

获取通过query方法传入的参数,通过参数名获取对应的值

r o u t e 和 route和 routerouter的区别

  • r o u t e r 为 V u e R o u t e r 实 例 , 想 要 导 航 到 不 同 U R L , 则 使 用 router为VueRouter实例,想要导航到不同URL,则使用 routerVueRouterURL使router.push方法
  • $route为当前router跳转对象里面可以获取name、path、query、params等

导航守卫

  • vue-router提供的导航守卫主要用来监听监听路由的进入和离开的.
  • vue-router提供了beforeEach和afterEach的钩子函数, 它们会在路由即将改变前和改变后触发.

用处

  • 我们可以利用beforeEach来完成标题的修改.

    • 首先, 我们可以在钩子当中定义一些标题, 可以利用meta来定义

    • 其次, 利用导航守卫,修改我们的标题.

      import Vue from 'vue'
      import VueRouter from 'vue-router'
      Vue.use(VueRouter)
      import paramsTool from '../components/paramsTool'
      //定义路由
      const routes=[
          {
              path:'/params/:id',
              component:paramsTool,
              meta:{
                  title:'params传递参数'
              }
          },
          {
              path:'/params',
              component:paramsTool,
              meta:{
                  title:'非params传递参数'
              }
          }
      ]
      //创建router实例
      const router = new VueRouter({
          routes
      })
      router.beforeEach((to,from,next) => {
          window.document.title = to.meta.title
          next()
      })
      //导出router实例
      export default router
      

参数

导航钩子的三个参数解析:

  • to: 即将要进入的目标的路由对象.
  • from: 当前导航即将要离开的路由对象.
  • next: 调用该方法后, 才能进入下一个钩子

补充

  • 补充一:如果是后置钩子, 也就是afterEach, 不需要主动调用next()函数.
  • 补充二: 上面我们使用的导航守卫, 被称之为全局守卫.
    • 路由独享的守卫
    • 组件内的守卫

keep-alive

  • keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。

它们有两个非常重要的属性:

include - 字符串或正则表达,只有匹配的组件会被缓存

exclude - 字符串或正则表达式,任何匹配的组件都不会被缓存

  • router-view 也是一个组件,如果直接被包在 keep-alive 里面,所有路径匹配到的视图组件都会被缓存:

    <keep-alive>
        <router-view></router-view>
    </keep-alive>
    
  • 通过create声明周期函数来验证

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值