美文网首页
6.Vue-路由传参的方式

6.Vue-路由传参的方式

作者: 程序萌 | 来源:发表于2020-05-29 15:28 被阅读0次
  • 点击当前页的某个按钮跳转到另外一个页面去,并将某个值带过去
     <div class="examine" @click="insurance(2)">查看详情</div>

特别注意哦, 组件中 获取参数的时候是route.params 而不是router
router 这很重要~~~

  • 第一种方法 页面刷新数据不会丢失 传递的参数会显示在url后面?id=?
methods:{
  insurance(id) {
       //直接调用$router.push 实现携带参数的跳转
        this.$router.push({
          path: `/particulars/${id}`,
        })
}
  • 需要对应路由配置如下:可以看出需要在path中添加/:id来对应 $router.push 中path携带的参数。
   {
     path: '/particulars/:id',
     name: 'particulars',
     component: particulars
   }
  • 在子组件中可以使用来获取传递的参数值
   this.$route.params.id
  • 第二种方法 页面刷新数据会丢失 通过路由属性中的name来确定匹配的路由,通过params来传递参数。
   methods:{
  insurance(id) {
       this.$router.push({
          name: 'particulars',
          params: {
            id: id
          }
        })
  }
  • 对应路由配置: 注意这里不能使用:/id来传递参数了,因为组件中,已经使用params来携带参数了。
    {
     path: '/particulars',
     name: 'particulars',
     component: particulars
   }
  • 子组件中: 这样来获取参数
   this.$route.params.id
  • 第三种方法 页面刷新数据不会丢失
    使用path来匹配路由,然后通过query来传递参数
    这种情况下 query传递的参数会显示在url后面?id=?
methods:{
  insurance(id) {
        this.$router.push({
          path: '/particulars',
          query: {
            id: id
          }
        })
  }
   
  • 对应路由配置:
   {
     path: '/particulars',
     name: 'particulars',
     component: particulars
   }
  • 子组件中: 这样来获取参数
   this.$route.query.id

加密参数

  • 在vue项目里,怕刷新页面丢失参数常用query代替params,但是会导致传递的参数会显示在url后面类似?id=?为了保证敏感数据不会泄露,使用加密参数来解决这个问题 ,使用加密方式是Base64
  • 第一种npm 安装
npm install --save js-base64
  • 在项目文件(play.vue)中引入
let Base64 = require('js-base64').Base64
<script>
    export default {
        name: "play",
    }
</script>
  • 当前项目文件(play.vue)中使用 加密
Base64.encode('4')  // 返回值是"NA==",此时已经将4转换成了"NA=="
  • 在其他项目文件(playNext.vue)中引入
let Base64 = require('js-base64').Base64
<script>
    export default {
        name: "playNext",
    }
</script>
  • 在其他项目文件(playNext.vue)中使用,进行解密
Base64.decode('NA==')  // 返回值的4,将加密后的字符串解密成原来的
  • 第二种直接引入的方式: 首先创建一个base64.js,
const Base64 = {
   //加密
    encode(str) {
        return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
            function toSolidBytes(match, p1) {
                return String.fromCharCode('0x' + p1);
            }));
    },
  //解密
    decode(str) {
        // Going backwards: from bytestream, to percent-encoding, to original string.
        return decodeURIComponent(atob(str).split('').map(function (c) {
            return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
        }).join(''));
    }
}
export default Base64
  • 在main.js中全局引入,方便调用
import Base64 from './utils/base64.js' 
Vue.prototype.$Base64 = Base64;
  • 当前项目文件(play.vue)中使用 加密
 this.$Base64.encode('4')  // 返回值是"NA==",此时已经将4转换成了"NA=="
  • 在其他项目文件(playNext.vue)中使用,进行解密
 this.$Base64.decode('NA==')  // 返回值的4,将加密后的字符串解密成原来的

相关文章

  • 6.Vue-路由传参的方式

    点击当前页的某个按钮跳转到另外一个页面去,并将某个值带过去 特别注意哦, 组件中 获取参数的时候是route.pa...

  • vue路由传参.md

    两种传参方法 1.命名路由传参(name, params方式) 2.路由路径传参(path, query方式...

  • 2018-09-25 vue初学十(路由的嵌套及传参)

    1.路由的嵌套 案例 2.路由的传参 传参的两种方式 案例

  • Vue-Router

    1. 路由配置 默认路由跳转 在 new Router时可用的配置参数: 2.路由传参 Vue路由传参的几种方式 ...

  • vue - 路由带参跳转

    vue路由传参按照传参方式可划分为params传参和query传参; params传参分为在url中显示和影藏参数...

  • Vue实战第二天

    路由组件传参 动态路由传参 静态路由传参 函数传参htm5 history 模式 设置通用路由,找不到页面跳转自定...

  • vue 路由传参的三种方式

    vue路由传参方式 params query vuex + sessionStore

  • 20.路由的基本使用

    1.路由的基本使用: 2.路由规则中传参方式: 方式1: 方式2: 3.路由之间的嵌套:

  • Flutter 路由传参小结

    Flutter路由传参总体来说有两种方式,一种是通过构造函数传参,一种是通过路由参数传参。这两种方式都可以使用自定...

  • vue路由 filters方法和filter过滤用法总结

    限制单行文字长度 路由传参写法 ---- 声明式 路由传参写法 ---- 编程式 路由传参写法 ---- 路由里要...

网友评论

      本文标题:6.Vue-路由传参的方式

      本文链接:https://www.haomeiwen.com/subject/hjrxzhtx.html