• vue router


    安装 | Vue Router    官网的相关用法 

    "vue-router": "^4.0.3",

    如果你是 npm i vue-router

    router>index.js

    1. import { createRouter, createWebHashHistory } from 'vue-router'
    2. import HomeView from '../views/HomeView.vue'
    3. const routes = [
    4. {
    5. path: '/',
    6. name: 'home',
    7. component: HomeView
    8. },
    9. {
    10. path: '/login',
    11. name: 'login',
    12. component: () => import(/* webpackChunkName: "about" */ '../views/LoginView.vue')
    13. },
    14. {
    15. path: '/register',
    16. name: 'register',
    17. component: () => import(/* webpackChunkName: "about" */ '../views/RegisterView.vue')
    18. },
    19. {
    20. path: '/search',
    21. name: 'search',
    22. component: () => import(/* webpackChunkName: "about" */ '../views/SearchView.vue')
    23. }
    24. ]
    25. const router = createRouter({
    26. history: createWebHashHistory(),
    27. routes
    28. })
    29. export default router

    main.js

    createApp(App).use(router)

    一个router就完成了


    通过定义meta:{show:true}  来决定显示与隐藏   router的原信息

    <Footer v-show="$route.meta.show"/>

    路由的跳转:

    声明式导航:  router-view 

    编程式导航: $router.push()

    // 如果你的路由没有配置 :keyword   地址栏显示  xxx/#/search
    this.$router.push({name: 'search',params:{keyword: this.keyword}})
    
    // 地址栏显示 xxx/#/search?k=大写字母
    this.$router.push({path: '/search',query:{k: this.keyword.toUpperCase()}})
    this.$route.params.keyword   this.$route.query.k
    
    //  如果要同时用params,query那么就只能是用name的写法
    this.$router.push({name: 'search',params:{keyword: this.keyword},query:{k:this.keyword.toUpperCase()}})    获取方式同上
    

    // params 指定可传可不传

    path: '/search/:keyword?'   其实在新版本中你不这么写路径也不会有问题,但是在地址栏是不会有参数出现的
    // 如果你传的空字符串   新版本中其实也不会有路径问题,如果有就加上undefined
    this.$router.push({name: 'search',params:{keyword: '' || undefined},query:{k: this.keyword.toUpperCase()}})
       props作为参数传递
    props: ($route) => {
      return {
        keyword: $route.params.keyword,
        k: $route.query.k
      }
    }

    简写:

    props: ($route) => ({
        keyword: $route.params.keyword,
        k: $route.query.k
    })

    vue3不用重写push房费

    vue2重写:

    main.js

    let originPush = VueRouter.prototype.push

    let originPush = VueRouter.prototype.replace

    // call 参数用逗号隔开,apply传递数组   篡改函数上下文一次

    VueRouter.prototype.push = function (location,res,rej) {

         if(res && rej)  {

    originPush.call(this,location,res,rej)              

            }  else {

            originPush.call(this,location,()=>{},()=>{})       

    }

    }

     
    

     

  • 相关阅读:
    『手撕Vue-CLI』添加终端用户交互
    「MySQL高级篇」MySQL之MVCC实现原理&&事务隔离级别的实现
    6242. 二叉搜索树最近节点查询
    【Ubuntu】基于C++实现人脸识别
    我使用延迟队列实现商品的竞拍成交功能
    2022-07-29 C++并发编程(三)
    【图像分割】距离正则化水平集演化及其在图像分割中的应用(Matlab代码实现)
    Pr:导出设置之字幕
    中科驭数DPU芯片K2斩获2023年“中国芯”优秀技术创新产品奖
    如何写好B端产品的技术方案?
  • 原文地址:https://blog.csdn.net/qq_35886411/article/details/125631505