Vue中router两种传参方式

Vue中router两种传参方式

1.Vue中router使用query传参

相关Html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/vue-2.4.0.js"></script>
    <script src="../js/vue-resource-1.3.4.js"></script>
    <!--1.引入vue-router-->
    <script src="../lib/vue-router-3.0.1.js"></script>
    <link rel="stylesheet" href="../bootstrap-3.3.7-dist/css/bootstrap.min.css">

    <style>
        .myactive {
            color: red;
            font-size: 20px;
        }

        .v-enter,
        .v-leave-to {
            opacity: 0;
            transform: translateX(140px);
        }

        .v-enter-active,
        .v-leave-active {
            transition: all 0.5s ease;

        }


    </style>
</head>
<body>
<div id="app">

    <router-link to="/login?id=10&name='zhangsan'">登录</router-link>
    <router-link to="/register">注册</router-link>

    <!--router-view,提供的用来当做占位符的 router中的规则会展现到这个里面去-->
    <transition mode="out-in">
        <router-view></router-view>
    </transition>
</div>

<script>
    var login = {
        template: '<h1>这个是登录组件--- {{$route.query.id}}----{{$route.query.name}} </h1>',
        data:function () {
            return {
                 msg:'123'
            }
        },
        created:function () {
            console.log(this.$route);
        }
    }
    var register = {
        template: '<h1>注册组件</h1>'
    }

    //在new
    var routerObj = new VueRouter({
        //这个配置对象中的route表示路由匹配规则的意思
        //1.path,表示监听,路由的连接地址
        //2.component 表示路由匹配到的path
        routes: [
            //注意:component属性值,必须是一个组件模板对象,不能是引用名称
            {path: '/', redirect: '/login'},
            {path: '/login', component: login},
            {path: '/register', component: register}
        ],
        linkActiveClass: 'myactive'
    })

    var vm = new Vue({
        el: "#app",
        data: {},
        methods: {},
        router: routerObj //将路由规则对象,注册到vm实例上,用来监听地址对象

    })

</script>
</body>
</html>

2Vue中router使用params传参

相关Html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/vue-2.4.0.js"></script>
    <script src="../js/vue-resource-1.3.4.js"></script>
    <!--1.引入vue-router-->
    <script src="../lib/vue-router-3.0.1.js"></script>
    <link rel="stylesheet" href="../bootstrap-3.3.7-dist/css/bootstrap.min.css">

    <style>
        .myactive {
            color: red;
            font-size: 20px;
        }

        .v-enter,
        .v-leave-to {
            opacity: 0;
            transform: translateX(140px);
        }

        .v-enter-active,
        .v-leave-active {
            transition: all 0.5s ease;

        }


    </style>
</head>
<body>
<div id="app">

    <router-link to="/login/10">登录</router-link>
    <router-link to="/register">注册</router-link>

    <transition mode="out-in">
        <router-view></router-view>
    </transition>
</div>

<script>
    var login = {
        template: '<h1>这个是登录组件--- {{$route.params.id}} </h1>',
        data:function () {
            return {
                msg:'123'
            }
        },
        created:function () {
            console.log(this.$route.params);
        }
    }
    var register = {
        template: '<h1>注册组件</h1>'
    }

    var routerObj = new VueRouter({
        routes: [
            {path: '/login/:id', component: login},
            {path: '/register', component: register}
        ],
        linkActiveClass: 'myactive'
    })

    var vm = new Vue({
        el: "#app",
        data: {},
        methods: {},
        router: routerObj //将路由规则对象,注册到vm实例上,用来监听地址对象

    })

</script>
</body>
</html>

转载于:https://www.cnblogs.com/charlypage/p/9911706.html

### 回答1: 你可以使用路由参数或者查询参数来传递参数。路由参数可以通过在路由路径使用冒号来定义,例如: ``` { path: '/user/:id', component: User } ``` 在组件可以通过 `$route.params` 来访问路由参数,例如: ``` <template> <div>User {{ $route.params.id }}</div> </template> ``` 查询参数可以通过在 URL 使用 `?` 和 `&` 来定义,例如: ``` { path: '/user', component: User } ``` 在组件可以通过 `$route.query` 来访问查询参数,例如: ``` <template> <div>User {{ $route.query.id }}</div> </template> ``` 你还可以使用 `props` 来传递参数,例如: ``` { path: '/user', component: User, props: { id: '123' } } ``` 在组件可以通过 `props` 来访问参数,例如: ``` <template> <div>User {{ id }}</div> </template> <script> export default { props: ['id'] } </script> ``` ### 回答2: 在Vue Router 4.1,可以通过使用动态路由和路由查询参数来传递参数。 1. 动态路由传参: - 在定义路由时,通过在路由路径加入参数占位符来创建动态路由。例如:`{ path: '/user/:id', component: User }`。 - 在组件,通过 `$route.params` 来访问动态路由参数。例如:`this.$route.params.id`。 2. 路由查询参数传参: - 在定义路由时,不需要在路径加入参数占位符。例如:`{ path: '/user', component: User }`。 - 在组件,通过 `$route.query` 来访问路由查询参数。例如:`this.$route.query.id`。 - 在导航时,可以使用 `router.push` 方法来传递路由查询参数。例如:`this.$router.push({ path: '/user', query: { id: 123 }})`。 需要注意的是,在使用路由查询参数传参时,参数会以 URL 查询字符串的形式出现在路由路径,例如:`/user?id=123`。 此外,你还可以在路由定义时使用命名路由,以便更方便地进行导航和传参。例如,在定义路由时使用命名路由:`{ path: '/user/:id', name: 'user', component: User }`,然后可以通过 `$router.push({ name: 'user', params: { id: 123 }})` 来进行导航。 总的来说,Vue Router 4.1可以通过动态路由和路由查询参数两种方式来传递参数,开发者可以根据具体需求选择合适的方式。 ### 回答3: 在Vue Router 4.1,可以通过多种方式进行参数传递。 一种常用的方式是通过路由路径传递参数。在定义路由时,可以在路由路径使用动态参数来传递数据。例如,定义一个带有参数的路由: ```javascript { path: '/user/:id', name: 'user', component: User } ``` 在使用该路由时,可以通过路由链接的参数来传递数据: ```html <router-link :to="{ name: 'user', params: { id: userId } }">User</router-link> ``` 在组件,可以通过`$route.params`来获取参数的值: ```javascript export default { mounted() { const userId = this.$route.params.id; // 使用参数进行相应的逻辑操作 } } ``` 另外,还可以通过查询参数来传递参数。在路由链接,可以通过`query`选项来传递参数: ```html <router-link :to="{ name: 'user', query: { id: userId } }">User</router-link> ``` 在组件,可以通过`$route.query`获取参数的值: ```javascript export default { mounted() { const userId = this.$route.query.id; // 使用参数进行相应的逻辑操作 } } ``` 需要注意的是,Vue Router 4.1参数的传递是基于组件的实例,所以在组件内部可以直接通过`$route`来获取传递的参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值