当前位置:首页 > React

react如何过去路由信息

2026-01-25 11:14:34React

获取当前路由信息

在React中获取当前路由信息通常依赖于路由库。React Router是最常用的路由解决方案,提供多种方式访问路由数据。

使用useLocation钩子

import { useLocation } from 'react-router-dom';

function Component() {
  const location = useLocation();
  console.log(location.pathname); // 当前路径
  console.log(location.search);   // 查询参数
  console.log(location.hash);     // hash值
  console.log(location.state);    // 路由状态对象
}

使用useParams获取动态参数

import { useParams } from 'react-router-dom';

function UserPage() {
  const params = useParams();
  console.log(params.id); // 获取如/user/:id中的id值
}

获取路由匹配信息

使用useMatch钩子

react如何过去路由信息

import { useMatch } from 'react-router-dom';

function Component() {
  const match = useMatch('/users/:id');
  console.log(match?.params.id); // 匹配到的动态参数
}

类组件中获取路由

对于类组件,可以使用高阶组件withRouter(React Router v5及以下):

import { withRouter } from 'react-router-dom';

class MyComponent extends React.Component {
  componentDidMount() {
    console.log(this.props.location);
    console.log(this.props.match);
  }
}

export default withRouter(MyComponent);

获取路由历史对象

使用useNavigate钩子(React Router v6)

react如何过去路由信息

import { useNavigate } from 'react-router-dom';

function Component() {
  const navigate = useNavigate();
  // 可以编程式导航并传递状态
  navigate('/new-path', { state: { data: 123 } });
}

获取查询参数

手动解析URLSearchParams

const query = new URLSearchParams(location.search);
const page = query.get('page'); // 获取?page=123中的123

使用第三方库如query-string

import queryString from 'query-string';

const parsed = queryString.parse(location.search);
console.log(parsed.page);

路由上下文访问

在深层子组件中,可以通过React Router的上下文直接访问:

import { useContext } from 'react';
import { __RouterContext } from 'react-router-dom';

function DeepChild() {
  const { location, match } = useContext(__RouterContext);
  // 使用路由数据
}

注意:React Router v6主要推荐使用钩子API,v5及以下版本兼容类组件方式。实际使用时需根据项目使用的路由版本选择对应方法。

标签: 路由过去
分享给朋友:

相关文章

vue实现户籍系统路由实现

vue实现户籍系统路由实现

户籍系统路由实现(Vue.js) 户籍系统通常需要管理居民信息、户籍变动、统计查询等功能模块。以下基于Vue Router的实现方案: 路由模块设计 在src/router/index.js中定义核…

动态路由的实现vue

动态路由的实现vue

动态路由的实现(Vue) 在Vue中实现动态路由通常涉及以下方法: 基于路由参数(params) 在路由配置中使用动态片段(以冒号开头),例如: const routes = [ { pa…

vue路由实现滑动

vue路由实现滑动

路由切换滑动动画实现 在Vue中实现路由切换时的滑动动画,可以通过Vue的过渡系统结合CSS动画或第三方库完成。以下是几种常见方法: 使用Vue过渡 + CSS动画 包裹<router-vie…

vue实现路由守卫

vue实现路由守卫

路由守卫的基本概念 路由守卫是Vue Router提供的一种机制,用于在路由跳转前后执行特定的逻辑。它可以用于权限控制、页面访问限制、数据预加载等场景。Vue Router提供了多种路由守卫,包括全局…

vue实现hash路由

vue实现hash路由

vue实现hash路由的基本原理 Vue实现hash路由主要依赖浏览器原生的hashchange事件和Vue的响应式系统。hash路由通过监听URL中#后面的变化来切换页面内容,无需向服务器发起请求。…

vue实现路由管理

vue实现路由管理

Vue 路由管理实现方法 Vue 路由管理通常通过 vue-router 库实现,以下是具体实现方式: 安装 vue-router 通过 npm 或 yarn 安装最新版本: npm instal…