美文网首页壁纸小家程序员让前端飞
web前端vue:vue-router路由如何带上参数

web前端vue:vue-router路由如何带上参数

作者: 玩点小技术 | 来源:发表于2018-01-05 20:59 被阅读25次

    传统的的网站网页的开发,页面之间的参数是url地址栏上进行携带的(如:https://www.87ui.com?id=32323232&name=奇惠)这样的一个形式,这是传统的多页面的传参的方式。

    但是用vue这种做出来的单页面网站,它们之间是组件之间的传参。前面的文章也讲过组件之间的参数传递,但讲的是父传子或子传父的方式,是在一个大组件里向嵌套在它内的小组件传参数。但是像多页面那样跳转页面(vue里:组件之间跳转)之间跳转传递参数是如何实现的呢?

    今天就说说如何不用vue的自带的同组件之间传递数据方式,而用类似传统的多页面之间(url地址栏上带参数有点类似的方式)跳转的形式传递参数,看如下代码:

    a.vue // a组件

    <template>
        <button @click="go('378232788282')">修改</button>  // 举个很简单的修改例子
    </template>

    methods:{
        go(id){this.$router.push({ name: 'user_editor', params: { userId: 123 }})}
    }
    b.vue // b组件
    data(){
        userdata:{} // 用户信息
    }

    mounted(){  
        if(this.$route.params){ // 做个判断,是否有参数
            sessionStorage.userObj = JSON.stringify(this.$route.params)    // 获取参数先保存 
        }  
        this.userdata = JSON.parse(sessionStorage.userObj)
    }

    这是一个很简单的获取到用户id,然后跳转到事先写用户编辑页面和路由(user_editor),params是router自带的一个可携带参数的一个方法,params是一个对象,所以可以携带多个参数,但它有个缺点就是页面刷新它就会丢失,传统的在地址栏上的参数刷新页面是不会丢失的,所以这里还得借助H5的sessionStorage存储方式。把params对象string(JSON.stringify()格式保存,JSON.parse()读取)后暂存在一个sessionStorage上,这样就解决了刷新数据丢失的缺点。

    有喜欢vue的同学可以加我(微信:nihaomeili87)一起进步

    相关文章

      网友评论

        本文标题:web前端vue:vue-router路由如何带上参数

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