深入解析 【Vue Router】 的 【useRoute】 和 【useRouter】

在 Vue 3 中,Vue Router 引入了一些新的组合 API,包括 useRouteuseRouter,它们极大地简化了路由的管理和访问。这篇博客将详细介绍这两个函数的用法及其在实际开发中的应用。

1. useRoute 的概述

useRoute 是一个组合式 API,允许我们在组件中访问当前路由的信息。它返回一个响应式对象,包含了当前路由的所有相关信息。

1.1 使用方法

要使用 useRoute,首先需要在组件中导入它,并在 setup 函数中调用:

<template>
  <div>
    <h1>当前路径: {
   
   { route.path }}</h1>
    <h2>路由参数: {
   
   { route.params.id }}</h2>
  </div>
</template>

<script>
import { useRoute } from 'vue-router';

export default {
  setup() {
    const route = useRoute();
    
    return {
      route,
    };
  },
};
</script>

1.2 useRoute 返回的属性

useRoute 返回的对象包括以下重要属性:

  • path: 当前路由的路径。
  • params: 路由参数,通常用于动态路由。
  • query: 查询参数,来自 URL 的查询字符串。
  • hash: URL 的哈希部分。
  • matched: 当前路由的所有匹配记录。

1.3 示例:访问动态路由参数

<template>
  <div>
    <h1>用户 ID: {
   
   { route.params.userId }}</h1>
  </div>
</template>

<script>
import { useRoute } from 'vue-router';

export default {
  setup() {
    const route = useRoute();

    return {
      route,
    };
  },
};
</script>

2. useRouter 的概述

useRouter 也是一个组合式 API,它允许我们在组件中访问 Vue Router 实例,从而能够执行路由导航操作。

2.1 使用方法

useRoute 类似,首先需要在组件中导入 useRouter,并在 setup 函数中调用:

<template>
  <button @click="navigateToHome">返回首页</button>
</template>

<script>
import { useRouter } from 'vue-router';

export default {
  setup() {
    const router = useRouter();

    const navigateToHome = () => {
      router.push('/');
    };

    return {
      navigateToHome,
    };
  },
};
</script>

2.2 useRouter 常用方法

useRouter 返回的路由实例提供了几个常用的方法:

  • push(location): 导航到新的 URL。
  • replace(location): 以新 URL 替换当前 URL。
  • go(n): 导航到相对位置(例如,go(-1) 返回上一页)。
  • back(): 返回到上一个历史记录条目。

2.3 示例:在组件中实现路由跳转

<template>
  <button @click="goToProfile">查看个人资料</button>
</template>

<script>
import { useRouter } from 'vue-router';

export default {
  setup() {
    const router = useRouter();

    const goToProfile = () => {
      router.push({ name: 'Profile', params: { userId: 123 } });
    };

    return {
      goToProfile,
    };
  },
};
</script>

3. 结合 useRoute 和 useRouter

在实际开发中,useRouteuseRouter 通常是一起使用的,以便在响应路由变化时进行导航或处理逻辑。

3.1 示例:根据路由参数条件导航

<template>
  <div>
    <h1>当前用户: {
   
   { route.params.userId }}</h1>
    <button @click="navigateToHome">返回首页</button>
  </div>
</template>

<script>
import { useRoute, useRouter } from 'vue-router';

export default {
  setup() {
    const route = useRoute();
    const router = useRouter();

    const navigateToHome = () => {
      if (route.params.userId) {
        router.push('/');
      }
    };

    return {
      route,
      navigateToHome,
    };
  },
};
</script>

猜你喜欢

转载自blog.csdn.net/jhgj56/article/details/143406643