Home >Web Front-end >Vue.js >How to configure Vue3 routing, perform route jumps and pass parameters?

How to configure Vue3 routing, perform route jumps and pass parameters?

王林
王林forward
2023-05-09 23:28:164545browse

    1. Install the routing

    npm i vue-router

    2. Write the routing that needs to be displayed

    Create the pages folder in the src directory and create it inside The two vue files are named student.vue, person.vue

    How to configure Vue3 routing, perform route jumps and pass parameters?

    Write two vue files respectively

    student.vue and person.vue

    <template>
        学生
    </template>
     
    <script setup>
     
    </script>
     
    <style scoped lang="less">
     
    </style>
    <template>
    人类
    </template>
     
    <script setup>
     
    </script>
     
    <style scoped lang="less">
     
    </style>

    3. Configure routing

    Configure the router.js file in the src directory

    import { createRouter,createWebHistory } from "vue-router";
    const router=createRouter({
        history:createWebHistory(),
        routes:[
            {
                component:()=>import(&#39;../pages/person.vue&#39;),
                name:&#39;person&#39;,
                path:&#39;/person&#39;
            },
            {
                component:()=>import(&#39;../pages/student.vue&#39;),
                name:&#39;student&#39;,
                path:&#39;/student&#39;
            },
            {
                //实现路由重定向,当进入网页时,路由自动跳转到/student路由
                redirect:&#39;/student&#39;,
                path:&#39;/&#39;
            }
        ]
    })
    export default router

    3. Use routing

    Use routing in main.js

    import { createApp } from &#39;vue&#39;
    import App from &#39;./App.vue&#39;
    import router from &#39;./router&#39;
     
    createApp(App).use(router).mount(&#39;#app&#39;)

    Display routes in app.vue, use router-link to jump routes, to represents which route to jump to

    <template>
      <router-view></router-view>
      <hr>
      <div>
        <router-link to="/student">到student路由</router-link>
        <br>
        <router-link to="/person">到person路由</router-link>
      </div>
    </template>
     
    <script setup>
     
    </script>
    <style scoped>
     
    </style>

    The effect is as shown in the figure below, click (to student route) or ( to person routing) will perform route jump

    How to configure Vue3 routing, perform route jumps and pass parameters?

    4, programmatic routing

    Declarative routing performs route jump through router-link, programmatic routing Implemented through functions

    Modify app.vue, vue3 uses a combined API, you need to introduce

    useRouter, useRoute, and

    const router=useRouter()

    const route=useRoute()

    <template>
      <router-view></router-view>
      <hr>
      <div>
        <button @click="toStudent">到student路由</button>
        <br>
        <button @click="toPerson">到person路由</button>
      </div>
    </template>
     
    <script setup>
    import {useRouter,useRoute} from &#39;vue-router&#39;
    const router=useRouter()
    const route=useRoute()
    const toStudent=()=>{
      router.push(&#39;student&#39;)
    }
    const toPerson=()=>{
      router.push(&#39;person&#39;)
    }
    </script>
    <style scoped>
     
    </style>

    Route hop through router.push Transfer

    Use router router between routes, and use toute route for the current route

    The result is as shown in the figure below, realizing programmatic route jump

    How to configure Vue3 routing, perform route jumps and pass parameters?

    If no alias is set when configuring routing, you need to jump through the router.push configuration object

    const toStudent=()=>{
      router.push({
        path:&#39;/student&#39;
      })
    }
    const toPerson=()=>{
      router.push({
        path:&#39;/person&#39;
      })
    }

    5. Routing parameters

    5. 1Query parameter transfer

    Pass the id and name to the student route

    const toStudent=()=>{
      router.push({
        path:&#39;/student&#39;,
        query:{
          id:1,
          name:&#39;张三&#39;
        }
      })
    }

    The student route receives the query parameter

    <template>
        学生组件
        <div>{{data.query}}</div>
    </template>
     
    <script setup>
    import { reactive } from &#39;vue&#39;;
    import {useRouter,useRoute} from &#39;vue-router&#39;
    const route=useRoute()
    let data=reactive({
        query: route.query
    })
    </script>

    The effect is as shown in the figure below

    How to configure Vue3 routing, perform route jumps and pass parameters?

    5, 2 Pass params parameters

    Assuming that params parameters are passed to person routing, they need to be modified during routing configuration

    You need to use name to pass params parameters Specify the route

    const toPerson=()=>{
      router.push({
        name:&#39;person&#39;,
        params:{
          keyword:2
        }
      })
    }

    At the same time, the routing configuration needs to be modified. Assuming that the keyword is passed,

    needs to use placeholders and keywords in the path

    ? Indicates that it can be passed or not

    {
          component:()=>import(&#39;../pages/person.vue&#39;),
          name:&#39;person&#39;,
          path:&#39;/person/:keyword?&#39;
    },

    Receive params parameter in person.vue

    <template>
        人类组件
        <div>{{data.params.keyword}}</div>
    </template>
     
    <script setup>
    import { reactive } from &#39;vue&#39;;
    import {useRouter,useRoute} from &#39;vue-router&#39;
    const route=useRoute()
    let data=reactive({
        params: route.params
    })
    </script>

    The effect is as follows

    How to configure Vue3 routing, perform route jumps and pass parameters?

    6 , Sub-routing configuration

    Add sub-components (stu1, stu2 components) to the student route

    How to configure Vue3 routing, perform route jumps and pass parameters?

    The path of the sub-component does not contain /

    {
                component:()=>import(&#39;../pages/student.vue&#39;),
                name:&#39;student&#39;,
                path:&#39;/student&#39;,
                children:[
                    {
                        path:&#39;stu1&#39;,
                        name:&#39;stu1&#39;,
                        component:()=>import(&#39;../pages/stu1.vue&#39;)
                    },
                    {
                        path:&#39;stu2&#39;,
                        name:&#39;stu2&#39;,
                        component:()=>import(&#39;../pages/stu2.vue&#39;)
                    },
                    {
                        path:&#39;&#39;,
                        component:()=>import(&#39;../pages/stu1.vue&#39;)
                    }
                ]
            }

    Write stu1 component

    <template>
    stu1
    </template>
     
    <script setup>
     
    </script>
     
    <style scoped lang="less">
     
    </style>

    Write stu2 component

    <template>
    stu2
    </template>
     
    <script setup>
     
    </script>
     
    <style scoped lang="less">
     
    </style>

    Display subcomponents in the student component

    <template>
        学生组件
        <div>{{data.query}}</div>
        子组件展示
        <router-view></router-view>
        <router-link to="/student/stu1">到stu1</router-link>
        <router-link to="/student/stu2">到stu2</router-link>
    </template>
     
    <script setup>
    import { reactive } from &#39;vue&#39;;
    import {useRouter,useRoute} from &#39;vue-router&#39;
    const route=useRoute()
    let data=reactive({
        query: route.query
    })
    </script>

    By using router -link for routing jump, you can also jump through programmatic routing

    to="/student/stu1" You need to use the complete path to jump

    Show results

    How to configure Vue3 routing, perform route jumps and pass parameters?

    The above is the detailed content of How to configure Vue3 routing, perform route jumps and pass parameters?. For more information, please follow other related articles on the PHP Chinese website!

    Statement:
    This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete