当前位置: 首页 > article >正文

玩转vue-router的简单用法

在 Vue 3 中,vue-router 提供了两个非常有用的组合式 API 函数:useRouteruseRoute。它们分别用于不同的目的,帮助你更方便地进行路由导航和获取当前路由的信息。

useRouter

useRouter 是一个返回当前应用的 router 实例的函数。通过这个实例,你可以执行编程式的导航操作,如跳转到新的页面、替换当前页面等。

主要用途:
  • 执行导航操作(例如跳转到不同的路由)。
  • 访问路由实例的方法,如 pushreplacego 等。
常用方法:
  • router.push(location):导航到一个新的路由地址。
  • router.replace(location):替换当前的路由地址(不会添加新的历史记录)。
  • router.go(n):在浏览器历史记录中前进或后退 n 步。
  • router.back():回到上一页(相当于 router.go(-1))。
  • router.forward():前进到下一页(相当于 router.go(1))。
import { useRouter } from 'vue-router';

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

    const navigateToHome = () => {
      router.push('/home'); // 跳转到首页
    };

    const replaceWithAbout = () => {
      router.replace('/about'); // 替换当前路由为关于页
    };

    const goBack = () => {
      router.back(); // 返回上一页
    };

    return { navigateToHome, replaceWithAbout, goBack };
  }
};

useRoute 

useRoute 是一个返回当前激活的路由对象的函数。这个对象包含了当前 URL 解析后的信息,比如路径、查询参数、参数、哈希值等。

主要用途:
  • 获取当前路由的相关信息(例如路径、参数、查询参数等)。
常用属性:
  • route.path:当前路径。
  • route.name:当前路由的名称(如果有配置的话)。
  • route.params:动态路由参数。
  • route.query:URL 查询参数。
  • route.fullPath:完整路径(包括查询参数和哈希值)。
  • route.meta:路由元信息(如果有的话)。
import { useRoute } from 'vue-router';

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

    const currentPath = route.path; // 当前路径
    const queryParams = route.query; // 查询参数
    const dynamicParams = route.params; // 动态参数

    console.log('当前路径:', currentPath);
    console.log('查询参数:', queryParams);
    console.log('动态参数:', dynamicParams);

    return { currentPath, queryParams, dynamicParams };
  }
};
特性useRouteruseRoute
用途用于执行导航操作用于获取当前路由的信息
返回值返回 router 实例返回当前的 route 对象
常用场景需要跳转到新页面、替换当前页面等需要访问当前页面的路径、参数、查询参数等
示例router.push('/home')const path = route.path

使用示例 

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

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

    const handleNavigation = () => {
      const id = route.query.id; // 获取查询参数中的 id

      if (id) {
        router.push(`/details/${id}`); // 根据 id 导航到详情页
      } else {
        router.push('/error'); // 如果没有 id,导航到错误页面
      }
    };

    return { handleNavigation };
  }
};

别写错。别写错。别写错!


http://www.kler.cn/a/612360.html

相关文章:

  • Python----计算机视觉处理(Opencv:图像旋转:插值方法,边缘填充方法)
  • 【计算机网络之以太网详解】
  • 【DeepSeek大语言模型】AI智能体开发与大语言模型的本地化部署、优化技术
  • yolo系列算法最新进展
  • TDengine 集群节点管理
  • WebLogic中间件常见漏洞
  • JavaScript基础-定时器
  • 解决·CSS·font-weight给数字值没有反应
  • 注册中心之Nacos相较Eureka的提升分析
  • 朴素贝叶斯:文本处理中的分类利器
  • SvelteKit 最新中文文档教程(12)—— 高级路由
  • Appium中元素定位的注意点
  • 重学Java基础篇—什么是快速失败(fail-fast)和安全失败(fail-safe)?
  • CSS终极指南:从基础到高级实践
  • JVM如何判断一个对象可以被回收
  • 【Python】multiprocessing - 进程隔离
  • 高级数据结构04动态规划
  • Quarkus云原生服务开发详解
  • 《向量数据库指南》——解密DeepSearcher:推动AI智能报告生成的新范式
  • leetcode543.二叉树的直径