zoukankan      html  css  js  c++  java
  • vue-router 的用法

    vue-router的两种实现导航的方式:

    1.通过<router-link :to="...">实现:to指向一个对象{}里面有path,name ,query等属性,可以设置路由导航的路径,传递的参数,组件名称

     1  <div id="app">
     2         <!-- 传递参数 的两种方式query//params-->
     3         <router-link :to="{path:'login',query:{id:100}}">登录</router-link>
     4         <router-link :to="{name:'register',params:{name:'韩信'}}">注册</router-link>
     5         <!-- 组件占位 -->
     6         <router-view></router-view>
     7     </div>
     8
    11     <script>
    12     //    创建两个组价,分别是login,register
    13         var login ={
    14             template:"<h3>我是登录组件---参数{{this.$route.query.id}}</h3>",
    15             data(){
    16                 return{}
    17             },
    18             mounted(){
    19                 console.log(this.$route.query.id);  // 输出 100  
    20             }
    21         }
    22         var register ={
    23             template:"<h3>我是注册组件---参数{{this.$route.params.name}}</h3>",
    24             data(){
    25                 return{}
    26             },
    27             mounted(){
    28                 console.log(this.$route.params.name); //输出 韩信   
    29             }
    30         }
    31     
    32     //  创建路由对象:
    33     const router = new VueRouter({
    34         routes:[
    35             {path:'/login',component:login},
    36             {path:'/register', name:'register',component:register},
    37 
    38         ]
    39     })
    40         var vm = new Vue({
    41             el: "#app",
    42             data: {},
    43             router
    44             
    45         })

    备注:使用<router-link to=" ">时使用的规范

     1 // 字符串
     2 <router-link to="apple"> to apple</router-link>
     3 // 对象
     4 <router-link :to="{path:'apple'}"> to apple</router-link>
     5 // 命名路由
     6 <router-link :to="{name: 'applename'}"> to apple</router-link>
     7 //直接路由带查询参数query,地址栏变成 /apple?color=red
     8 <router-link :to="{path: 'apple', query: {color: 'red' }}"> to apple</router-link>
     9 // 命名路由带查询参数query,地址栏变成/apple?color=red
    10 <router-link :to="{name: 'applename', query: {color: 'red' }}"> to apple</router-link>
    11 //直接路由带路由参数params,params 不生效,如果提供了 path,params 会被忽略
    12 <router-link :to="{path: 'apple', params: { color: 'red' }}"> to apple</router-link>
    13 // 命名路由带路由参数params,地址栏是/apple/red
    14 <router-link :to="{name: 'applename', params: { color: 'red' }}"> to apple</router-link>

    2.通过$router.push({})实现路由跳转

     1   <div id="app">
     2         <!-- 传递参数 的两种方式query//params-->
     3        <!-- <login></login>
     4        <register></register> -->
     5         <!-- 组件占位 -->
     6         <router-view></router-view>
     7     </div>
     8 
     9    <template id="login">
    10        <div>
    11             <h3>我是登录组件---参数{{this.$route.query.name}}</h3>
    12             <button @click="back()">跳转到login组件</button>
    13        </div>
    14    </template>
    15 
    16    <template id="register">
    17         <div>
    18              <h3>我是注册组件---参数{{this.$route.query.name}}</h3>
    19              <button @click="next()">跳转到login组件</button>
    20         </div>
    21     </template>
    22 
    23     <script>
    24     //    创建两个组价,分别是login,register
    25         var login ={
    26             template:"#login",
    27             data(){
    28                 return{}
    29             },
    30             mounted(){
    31                 console.log(this.$route.query.name);  // 输出 100  
    32             },
    33             methods:{
    34                 back(){
    35                     this.$router.push({name:'register',query:{name:"杨芳芳"}})
    36                 }
    37             }
    38         }
    39         var register ={
    40             template:"#register",
    41             data(){
    42                 return{}
    43             },
    44             mounted(){
    45                 console.log(this.$route.query.name); //输出 韩信   
    46             },
    47             methods:{
    48                 next(){
    49                     this.$router.push({name:'login',query:{name:"陈斌"}})
    50                 }
    51             }
    52         }
    53     
    54     //  创建路由对象:
    55     const router = new VueRouter({
    56         routes:[
    57             {path:'/login',component:login,name:'login'},
    58             {path:'/register', name:'register',component:register},
    59 
    60         ]
    61     })
    62         var vm = new Vue({
    63             el: "#app",
    64             data: {},
    65             router,
    66             components:{
    67                 login,register
    68             }
    69             
    70         })
    71     </script>

    上述代码解析:先创建了两个组件login// register,并创建路由对象,配置路由规则。在组件内部通过事件触发--->this.$router.push({name:'组件名称',query:{参数}})

    备注:$router.push({name:'组件名称',query:{参数}})的使用规则:

     1 // 字符串
     2 router.push('apple')
     3 // 对象
     4 router.push({path:'apple'})
     5 // 命名路由
     6 router.push({name: 'applename'})
     7 //直接路由带查询参数query,地址栏变成 /apple?color=red
     8 router.push({path: 'apple', query: {color: 'red' }})
     9 // 命名路由带查询参数query,地址栏变成/apple?color=red
    10 router.push({name: 'applename', query: {color: 'red' }})
    11 //直接路由带路由参数params,params 不生效,如果提供了 path,params 会被忽略
    12 router.push({path:'applename', params:{ color: 'red' }})
    13 // 命名路由带路由参数params,地址栏是/apple/red
    14 router.push({name:'applename', params:{ color: 'red' }})
  • 相关阅读:
    servlet规范核心类图
    策略模式
    掌握Spark机器学习库-07-回归算法原理
    掌握Spark机器学习库-07-线性回归算法概述
    掌握Spark机器学习库-07-回归分析概述
    掌握Spark机器学习库-06-基础统计部分
    掌握Spark机器学习库-05-spark中矩阵与向量的使用
    测试开发要懂的设计模式知识
    数据可视化工具-ECharts
    掌握Spark机器学习库-02-mllib数据格式
  • 原文地址:https://www.cnblogs.com/1825224252qq/p/11777084.html
Copyright © 2011-2022 走看看