Vue3的路由传参方法有哪些

其他教程   发布日期:2025年04月11日   浏览次数:224

这篇文章主要讲解了“Vue3的路由传参方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3的路由传参方法有哪些”吧!

下面方法刷新参数都不会丢失

1. name + params

路由配置(需要配置成动态路由形式,原先的直接传参不能用了)

  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import HomeView from '../views/HomeView.vue'
  3. const router = createRouter({
  4. history: createWebHistory(import.meta.env.BASE_URL),
  5. routes: [
  6. {
  7. path: '/',
  8. name: 'home',
  9. component: HomeView,
  10. },
  11. {
  12. path: '/about/:id',
  13. name: 'about',
  14. component: () => import('../views/AboutView.vue'),
  15. },
  16. ],
  17. })
  18. export default router

组件A

  1. <script>
  2. import { useRouter } from 'vue-router'
  3. export default {
  4. name: 'Home',
  5. setup() {
  6. const router = useRouter()
  7. const toAbout = () => {
  8. router.push({
  9. name: 'about',
  10. params: {
  11. id: 100,
  12. },
  13. })
  14. }
  15. return {
  16. toAbout,
  17. }
  18. },
  19. }
  20. </script>
  21. <template>
  22. <main>
  23. <button @click="toAbout">to About</button>
  24. </main>
  25. </template>

组件B

  1. <script>
  2. import { useRoute } from 'vue-router'
  3. export default {
  4. name: 'about',
  5. setup() {
  6. const route = useRoute()
  7. console.log('99999999', route.params)
  8. },
  9. }
  10. </script>
  11. <template>
  12. <div class="about">
  13. <h2>about</h2>
  14. </div>
  15. </template>

2. name + query

路由配置(普通形式即可,query会将参数?拼接到路径上)

  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import HomeView from '../views/HomeView.vue'
  3. const router = createRouter({
  4. history: createWebHistory(import.meta.env.BASE_URL),
  5. routes: [
  6. {
  7. path: '/',
  8. name: 'home',
  9. component: HomeView,
  10. },
  11. {
  12. path: '/about',
  13. name: 'about',
  14. component: () => import('../views/AboutView.vue'),
  15. },
  16. ],
  17. })
  18. export default router

组件A

  1. <script>
  2. import { useRouter } from 'vue-router'
  3. export default {
  4. name: 'Home',
  5. setup() {
  6. const router = useRouter()
  7. const toAbout = () => {
  8. router.push({
  9. name: 'about',
  10. query: {
  11. id: 100,
  12. },
  13. })
  14. }
  15. return {
  16. toAbout,
  17. }
  18. },
  19. }
  20. </script>
  21. <template>
  22. <main>
  23. <button @click="toAbout">to About</button>
  24. </main>
  25. </template>

组件B

  1. <script>
  2. import { useRoute } from 'vue-router'
  3. export default {
  4. name: 'about',
  5. setup() {
  6. const route = useRoute()
  7. console.log('99999999', route.query)
  8. },
  9. }
  10. </script>
  11. <template>
  12. <div class="about">
  13. <h2>about</h2>
  14. </div>
  15. </template>

3. path + query

路由配置(普通形式即可,query会将参数?拼接到路径上)

  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import HomeView from '../views/HomeView.vue'
  3. const router = createRouter({
  4. history: createWebHistory(import.meta.env.BASE_URL),
  5. routes: [
  6. {
  7. path: '/',
  8. name: 'home',
  9. component: HomeView,
  10. },
  11. {
  12. path: '/about',
  13. name: 'about',
  14. component: () => import('../views/AboutView.vue'),
  15. },
  16. ],
  17. })
  18. export default router

组件A

  1. <script>
  2. import { useRouter } from 'vue-router'
  3. export default {
  4. name: 'Home',
  5. setup() {
  6. const router = useRouter()
  7. const toAbout = () => {
  8. router.push({
  9. path: '/about',
  10. query: {
  11. id: 100,
  12. },
  13. })
  14. }
  15. return {
  16. toAbout,
  17. }
  18. },
  19. }
  20. </script>
  21. <template>
  22. <main>
  23. <button @click="toAbout">to About</button>
  24. </main>
  25. </template>

组件B

  1. <script>
  2. import { useRoute } from 'vue-router'
  3. export default {
  4. name: 'about',
  5. setup() {
  6. const route = useRoute()
  7. console.log('99999999', route.query)
  8. },
  9. }
  10. </script>
  11. <template>
  12. <div class="about">
  13. <h2>about</h2>
  14. </div>
  15. </template>

4. 路径字符串?拼接参数

路由配置

  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import HomeView from '../views/HomeView.vue'
  3. const router = createRouter({
  4. history: createWebHistory(import.meta.env.BASE_URL),
  5. routes: [
  6. {
  7. path: '/',
  8. name: 'home',
  9. component: HomeView,
  10. },
  11. {
  12. path: '/about',
  13. name: 'about',
  14. component: () => import('../views/AboutView.vue'),
  15. },
  16. ],
  17. })
  18. export default router

组件A

  1. <script>
  2. import { useRouter } from 'vue-router'
  3. export default {
  4. name: 'Home',
  5. setup() {
  6. const router = useRouter()
  7. const toAbout = () => {
  8. router.push('/about?id=100')
  9. }
  10. return {
  11. toAbout,
  12. }
  13. },
  14. }
  15. </script>
  16. <template>
  17. <main>
  18. <button @click="toAbout">to About</button>
  19. </main>
  20. </template>

组件B

  1. <script>
  2. import { useRoute } from 'vue-router'
  3. export default {
  4. name: 'about',
  5. setup() {
  6. const route = useRoute()
  7. console.log('99999999', route.query)
  8. },
  9. }
  10. </script>
  11. <template>
  12. <div class="about">
  13. <h2>about</h2>
  14. </div>
  15. </template>

5. 路径字符串 / 拼接参数

路由配置

  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import HomeView from '../views/HomeView.vue'
  3. const router = createRouter({
  4. history: createWebHistory(import.meta.env.BASE_URL),
  5. routes: [
  6. {
  7. path: '/',
  8. name: 'home',
  9. component: HomeView,
  10. },
  11. {
  12. path: '/about/:id',
  13. name: 'about',
  14. component: () => import('../views/AboutView.vue'),
  15. },
  16. ],
  17. })
  18. export default router

组件A

  1. <script>
  2. import { useRouter } from 'vue-router'
  3. export default {
  4. name: 'Home',
  5. setup() {
  6. const router = useRouter()
  7. const toAbout = () => {
  8. router.push('/about/100')
  9. }
  10. return {
  11. toAbout,
  12. }
  13. },
  14. }
  15. </script>
  16. <template>
  17. <main>
  18. <button @click="toAbout">to About</button>
  19. </main>
  20. </template>

组件B

  1. <script>
  2. import { useRoute } from 'vue-router'
  3. export default {
  4. name: 'about',
  5. setup() {
  6. const route = useRoute()
  7. console.log('99999999', route.params)
  8. },
  9. }
  10. </script>
  11. <template>
  12. <div class="about">
  13. <h2>about</h2>
  14. </div>
  15. </template>

以上就是Vue3的路由传参方法有哪些的详细内容,更多关于Vue3的路由传参方法有哪些的资料请关注九品源码其它相关文章!