美文网首页
vue 路由组件之间传递参数

vue 路由组件之间传递参数

作者: 小黄不头秃 | 来源:发表于2023-06-09 07:13 被阅读0次
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id="app">
            <h1 >test</h1>
            <div>
                <router-link to="/user/1">user1</router-linnk>
                <router-link to="/user/2">user2</router-linnk>
                <router-link to="/user/3">user3</router-linnk>
            </div>
            <div>
                <router-view></router-view>
            </div>
        </div>
    
        <script src="./vue/vue.js"></script>
        <script src="./vue/vue-router.js"></script>
        <script>
            /**
            $route与路由高度耦合,不够灵活,所以可以使用props将组件和路由解耦
            1.props的值位布尔类型
            const router = new VueRouter({
                routes:{
                    // 如果props被设置为true,route.params 将会被设置为组件属性
                    {path:'/user/:id',component:user,props:true}
                }
            });
    
            const user = {
                props:['id'],//使用props接受路由参数
                template:'<div>用户:{{ id }}</div>'
            }
            2.props的值为对象类型(此时就不能够访问id)
            const router = new VueRouter({
                routes:{
                    // 如果props被设置为true,route.params 将会被设置为组件属性
                    {path:'/user/:id',component:user,props:{uname:"uname",age:12}}
                }
            });
            3,props的只为函数类型
            const router = new VueRouter({
                routes:[
                    {
                        path:"/user/:id",
                        component:user,
                        props:route => ({uname:"zs",age:12,id:route.params.id})
                    }
                ]
            })
    
            const user = {
                props:['uname','age','id'],
                template:'<div>用户信息:{{uname}}{{age}}{{id}}</div>'
            }
            */ 
    
            const user = {
                props:["id","uname","age"],
                template:"<h1>user{{ id }}组件,{{uname}},{{age}}</h1>"
            }
            // const router = new VueRouter({
            //     routes:[
            //         {
            //             path:"/",
            //             redirect:'/user'
            //         },
            //         {
            //             path:"/user/:id",
            //             component:user,
            //             props:true 
            //         }
            //     ]
            // });
            const router = new VueRouter({
                routes:[
                    {
                        path:"/user/:id",
                        component:user,
                        props:route => ({uname:"zs",age:12,id:route.params.id})
                    }
                ]
            })
    
            const vm = new Vue({
                el:"#app",
                router:router
            });
        </script>
    </body>
    </html>
    
    

    相关文章

      网友评论

          本文标题:vue 路由组件之间传递参数

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