当前位置:首页 > React

react动态路由如何传参

2026-01-25 14:42:25React

React 动态路由传参方法

在 React 中,动态路由传参主要通过路由库(如 React Router)实现,以下是常见方法:

使用 useParams 钩子(React Router v5+)

在路由配置中定义参数占位符,通过 useParams 获取参数值:

react动态路由如何传参

// 路由配置
<Route path="/user/:id" component={User} />

// 组件内获取参数
import { useParams } from 'react-router-dom';
function User() {
  const { id } = useParams();
  return <div>User ID: {id}</div>;
}

通过 useLocation 的 search 参数

适用于 URL 查询参数(?key=value):

react动态路由如何传参

import { useLocation } from 'react-router-dom';
function SearchPage() {
  const location = useLocation();
  const searchParams = new URLSearchParams(location.search);
  const query = searchParams.get('q');
  return <div>Search Query: {query}</div>;
}

通过 useNavigate 传递 state

导航时通过 state 传递对象参数(不会暴露在 URL 中):

// 发送参数
import { useNavigate } from 'react-router-dom';
function Home() {
  const navigate = useNavigate();
  navigate('/profile', { state: { user: 'admin' } });
}

// 接收参数
import { useLocation } from 'react-router-dom';
function Profile() {
  const { state } = useLocation();
  return <div>User: {state.user}</div>;
}

类组件中的参数获取

对于类组件,可以通过 this.props.match.params 获取:

class Product extends React.Component {
  render() {
    const { id } = this.props.match.params;
    return <div>Product ID: {id}</div>;
  }
}
// 路由配置
<Route path="/product/:id" component={Product} />

注意事项

  • React Router v6 移除了 withRouter,推荐使用钩子替代
  • 查询参数 (?key=value) 需要通过 URLSearchParams 手动解析
  • state 传参在页面刷新后会丢失,适合临时数据传递

标签: 路由动态
分享给朋友:

相关文章

vue路由实现滑动

vue路由实现滑动

实现 Vue 路由滑动效果的方法 使用 Vue Router 结合 CSS 过渡动画 在 Vue Router 的路由视图组件 <router-view> 上添加过渡效果,结合 CSS 实…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue…

vue 实现动态样式

vue 实现动态样式

动态样式绑定方法 在Vue中实现动态样式主要通过v-bind:class和v-bind:style指令完成,以下是具体实现方式: 类名绑定 <div :class="{ active:…

react路由如何使用

react路由如何使用

React 路由的基本使用 React 路由通常通过 react-router-dom 库实现,用于管理单页面应用(SPA)中的页面导航。 安装 react-router-dom: npm ins…

react路由如何刷新

react路由如何刷新

React 路由刷新方法 在 React 中,路由刷新通常涉及以下几种场景和解决方案: 强制重新加载当前页面 使用 window.location.reload() 可以强制刷新整个页面,但会丢失…

vue实现路由守卫

vue实现路由守卫

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