Vue.js中的router基础(动态、传参、接参、编程式导航 )

简介: Vue.js中的router基础(动态、传参、接参、编程式导航 )

前面是router的一级和二级路由,下面是路由里稍微复杂一点的东西:路由的动态,传参,接参。


这些个我们通过寺库网的分类页和分类页中每个类的详情的数据来做


寺库网:https://m.secoo.com


按照前面的,先配置好前面一篇的一级路由,但是稍微名字有些更改如下:

动态路由、路由传参:

1.先配置跨域方法:反向代理

  • 在根目录建立vue.config.js文件,这个文件等价于webpack里的webpack.config.js
  • 下载axios数据请求包
cnpm i axios -S
  • 在vue.config.js里配置跨域
module.exports= {
    devServer : {
        proxy : {
            //分类页的数据代理
            '/siku' : {//标记
                target : 'https://android.secoo.com',
                changeOrigin : true,
                pathRewrite : {
                    '^/siku' : ''//作用在真实地址中去掉标记
                }
            },
            //详情页数据代理,由于这个做了反跨域,所以后面没用上,本应该在List.vue里使用的
            '/msiku': {
                target: 'https://m.secoo.com',
                changeOrigin: true,
                pathRewrite: {
                '^/msiku': ''
        }
      }
        }
    }
}

2.配置Category.vue这个组件

  • 在 Category .vue组件里使用标记为/siku的跨域方案获取分类数据请求
<script>
export default {
  data () {
    return {
      category: null
    }
  },
  created () {
     this.$http.get('/siku/appservice/cartAndBrand.action',{//这里的/siku会自动匹配到对应的vue.config.js里的target
        params: {//这里面是接口数据里?后的内容参数
          v: 2.0,
          _: Date.now(),
          callback: 'jsonp1'
        }
      })
        .then( res => {
          this.category  = JSON.parse(res.data.slice(7,-1)).rp_result.categorys
        })
        .catch( error => console.log( error ))
  }
}
</script>
<template>
  <div>
    <div class="category-box">
      <div 
        v-for = "item in category"
        :key = "item.value"
        class="food-box"
      >
        <h3> {{ item.name + item.enName }} </h3>
        <ul>
          <li 
            v-for = "category in item.child"
            :key = "category.value"  
          >
            <!-- 路由的传参 -->
            <router-link
              :to = "{name: 'list',params: { id: category.value},query: {keyword: category.name}}"
            >
              {{ category.name }}
            </router-link>
          </li>
        </ul>
      </div>
    </div>
    <div>
      <router-view></router-view>
    </div>
  </div>
</template>

可能样子有点丑来点css

<style lang="stylus" scoped>
  $color = 'red'
  .food-box 
    ul
      list-style none
      display flex
      justify-content space-around
      flex-wrap wrap
      padding 0
      li 
        padding 10px
</style>

最后出来个这么个鬼东西,有点丑,接下来是每个分类的详细了


3.再进一步配置一下index.js文件


让List.vue作为每个分类详情的组件

需要导入list.vue


import List from '../components/pages/List.vue'

路由表下的Cayegary下增加List的路由

{
      path : '/category',
      component : Category
},
{
      path : '/list/:id',
      component : List,
      name : 'list'
}

路由接参:

路由接参需要移步到List.vue组件里

<template>
  <div>
    <button @click = 'goCategory'>
      返回
    </button>
    <p>
      <!-- 通过$route接收前面传递过来的参数 -->
      id: {{ this.$route.params.id }}
    </p>
    <p>
      query: {{ this.$route.query.keyword }}
    </p>
  </div>
</template>

编程式导航

其后那个返回按钮设计到编程式导航

知识点(挂在了$router上):

push

this.$router.push('/home')

this.$router.push({name,params,query})

push可以将我们的操作存放到浏览器的历史记录

replace

this.$router.replace('/home')

this.$router.replace({name,params,query})

replace没有将我们的操作存放到浏览器的历史记录, 效果为返回了二级

<script>
export default {
    methods :{
        goCategory () {
            console.log(this.$router)//这上面挂载了以下方法
            /*
               push
            */
           //this.$router.push('./home')//结果跳到首页后,详情页的路由展示区域还在
           //this.$router.push('./category')//同样路由展示区域还在
           //    this.$router.push({//同样路由展示区域还在
           //        name : 'list',
           //        /* params,
           //        query */
           //})
           /*replace */
            // this.$router.replace('/login')//正常
            this.$router.replace({
            path : '/category'
            })//正常
            /*
              history的forward,go,back都可以
            */
        }
    }
}
</script>

http://www.root181.com


相关文章
|
8天前
|
移动开发 JavaScript API
Vue Router 核心原理
Vue Router 是 Vue.js 的官方路由管理器,用于实现单页面应用(SPA)的路由功能。其核心原理包括路由配置、监听浏览器事件和组件渲染等。通过定义路径与组件的映射关系,Vue Router 将用户访问的路径与对应的组件关联,支持哈希和历史模式监听 URL 变化,确保页面导航时正确渲染组件。
|
8天前
|
JavaScript 前端开发 数据安全/隐私保护
Vue Router 简介
Vue Router 是 Vue.js 官方的路由管理库,用于构建单页面应用(SPA)。它将不同页面映射到对应组件,支持嵌套路由、路由参数和导航守卫等功能,简化复杂前端应用的开发。主要特性包括路由映射、嵌套路由、路由参数、导航守卫和路由懒加载,提升性能和开发效率。安装命令:`npm install vue-router`。
|
3月前
|
前端开发 JavaScript 持续交付
提高JavaScript编程效率
提高JavaScript编程效率
40 3
|
3月前
|
自然语言处理 JavaScript 前端开发
JavaScript闭包:解锁编程潜能,释放你的创造力
【10月更文挑战第25天】本文深入探讨了JavaScript中的闭包,包括其基本概念、创建方法和实践应用。闭包允许函数访问其定义时的作用域链,常用于数据封装、函数柯里化和模块化编程。文章还提供了闭包的最佳实践,帮助读者更好地理解和使用这一强大特性。
35 2
|
4月前
|
资源调度 JavaScript 前端开发
路由管理:Vue Router的使用和配置技巧
【10月更文挑战第21天】路由管理:Vue Router的使用和配置技巧
84 3
|
4月前
|
缓存 JavaScript 搜索推荐
Vue Router 导航钩子的使用场景
【10月更文挑战第13天】
35 1
|
4月前
|
JavaScript 搜索推荐 数据处理
Vue Router 导航钩子
【10月更文挑战第17天】需要注意的是,过度使用导航钩子可能会导致代码复杂度增加,因此需要合理规划和使用。此外,不同的钩子在不同的场景下具有不同的作用,需要深入理解其特点和用法,才能更好地发挥它们的价值。可以在实际项目中结合具体需求,充分利用这些导航钩子来打造更加智能、灵活的路由导航机制。
51 1
|
4月前
|
JavaScript
Vue路由传参实战指南:三种常用方法示例演示
Vue路由传参实战指南:三种常用方法示例演示
199 0
|
4月前
|
JavaScript UED 开发者
Vue中的导航守卫有哪三种?分别有什么作用
Vue中的导航守卫有哪三种?分别有什么作用
|
4月前
|
JavaScript 前端开发
vue尚品汇商城项目-day01【7.路由传参】
vue尚品汇商城项目-day01【7.路由传参】
38 0

热门文章

最新文章

  • 1
    当面试官再问我JS闭包时,我能答出来的都在这里了。
    47
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    Node.js 中实现多任务下载的并发控制策略
    34
  • 4
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 5
    【JavaScript】深入理解 let、var 和 const
    49
  • 6
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    47
  • 7
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    57
  • 8
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    57
  • 9
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    72
  • 10
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    57