Vue路由中 query和params传参

vue-router 中 query和params传参

两者有区别,直白点就是:query相当于get请求,页面跳转的时候,可以在地址栏看到请求参数;而params相当于post请求,参数不会再地址栏中显示

1.query

地址栏:
在这里插入图片描述

<div id='app'>
        <!-- 如果子啊路由中,使用 查询字符串,给路由传递参数,则不需要修改 路由规则的 path 属性 -->
        <router-link to="/login?id=10&name=zs">登录</router-link>
        <router-link to="/register">注册</router-link>
        <router-view></router-view>
    </div>
var router = new VueRouter({
            routes: [{
                path: '/login',
                component: login
            }, {
                path: '/register',
                component: register
            }]
        })

完整的:

<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <meta http-equiv='X-UA-Compatible' content='ie=edge'>
    <title></title>
    <script src='../lib/vue.js'></script>
    <script src="../lib/vue-router.js"></script>
</head>
<body>
    <div id='app'>
        <!-- 如果子啊路由中,使用 查询字符串,给路由传递参数,则不需要修改 路由规则的 path 属性 -->
        <router-link to="/login?id=10&name=zs">登录</router-link>
        <router-link to="/register">注册</router-link>
        <router-view></router-view>
    </div>

    <script>
        var login = {
            template: '<h1>登录 ---{{this.$route.query.id}}--{{$route.query.name}}</h1>',
            data() {
                return {
                    // msg:this.$route.query.id
                    msg: '123'
                }
            },
            created() { //组件的生命周期钩子函数
                console.log(this.$route);
                console.log(this.$route.query.id)

            }
        }
        var register = {
            template: '<h1>注册</h1>'
        }
        
        var router = new VueRouter({
            routes: [{
                path: '/login',
                component: login
            }, {
                path: '/register',
                component: register
            }]
        })
        var vm = new Vue({
            el: '#app',
            data: {},
            methods: {},
            router: router
        });
    </script>
</body>

</html>

2.params

地址栏:
在这里插入图片描述

<div id='app'>
        <!-- 如果在路由中,使用 查询字符串,给路由传递参数,则不需要修改 路由规则的 path 属性 -->
        <router-link to="/login/12/李四">登录</router-link>
        <router-link to="/register">注册</router-link>
        <router-view></router-view>
    </div>
   var router = new VueRouter({
            routes: [{
                path: '/login/:id/:name', //只在这里传参,而上边router-link不传对应的参数,则路由匹配不到,不会显示
                component: login
            }, {
                path: '/register',
                component: register
            }]
        })

猜你喜欢

转载自blog.csdn.net/sxs7970/article/details/88549660
今日推荐