您的位置:首页 > 房产 > 建筑 > 软件开发管理平台_职业资格证培训机构加盟_拉新平台哪个好佣金高_百度最新版app下载安装

软件开发管理平台_职业资格证培训机构加盟_拉新平台哪个好佣金高_百度最新版app下载安装

2024/12/23 3:47:42 来源:https://blog.csdn.net/qq_42573767/article/details/144020769  浏览:    关键词:软件开发管理平台_职业资格证培训机构加盟_拉新平台哪个好佣金高_百度最新版app下载安装
软件开发管理平台_职业资格证培训机构加盟_拉新平台哪个好佣金高_百度最新版app下载安装

React Router 提供了多种方式来传递路由参数:

  1. URL 路径参数:通过动态路由和 useParams 获取。
  2. 查询参数:通过 useLocation 获取 URL 查询字符串。
  3. 路由状态传递:通过 state 属性在导航时传递数据,不在 URL 中显示,使用 useLocation 获取。
  4. React Router v6 Navigate 和 useNavigate:用于程序性导航并传递状态。

路由传参。React Router 提供了多种方式来传递和获取路由参数。以下是几种常见的方式:

1. URL 路径参数 (Path Parameters)

当你在 URL 路径中使用动态部分时,可以通过 React Router 的 useParams hook 来访问这些参数。

import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';

function App() {
  return (
    <Router>
      <Switch>
        <Route path="/user/:id" component={User} />  //路由配置文件中的写法同理
      </Switch>
    </Router>
  );
}

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

function User() {
  const { id } = useParams();  // 获取 URL 中的动态参数 id
  return <div>User ID: {id}</div>;
}

2. 查询参数 (Query Parameters)

可以在 URL 中通过查询字符串传递参数,使用 useLocation hook 来访问查询参数。

import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';

function App() {
  return (
    <Router>
      <Switch>
        <Route path="/search?query=react&sort=asc" component={SearchResults} />
      </Switch>
    </Router>
  );
}

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

function SearchResults() {
  const location = useLocation();
  const queryParams = new URLSearchParams(location.search);
  const query = queryParams.get('query');  // 获取 query 参数
  const sort = queryParams.get('sort');    // 获取 sort 参数

  return (
    <div>
      <p>Query: {query}</p>
      <p>Sort: {sort}</p>
    </div>
  );
}

3. 传递状态 (State via Navigation)

React Router 提供了通过 history.pushLink 传递状态的方式,这种方式的参数不会显示在 URL 中。

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

function Home() {
  return (
    <div>
      <Link
        to={{
          pathname: "/about",
          state: { fromHome: true }
        }}
      >
        Go to About
      </Link>
    </div>
  );
}

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

function About() {
  const location = useLocation();
  const fromHome = location.state?.fromHome;

  return <div>{fromHome ? 'Visited from Home' : 'Not from Home'}</div>;
}

4. 传递参数使用 Navigate (React Router v6)

在 React Router v6 中,Navigate 组件用于程序性导航,并且可以携带状态

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

function Home() {
  return <Navigate to="/about" state={{ fromHome: true }} />;
}

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

function About() {
  const location = useLocation();
  const fromHome = location.state?.fromHome;

  return <div>{fromHome ? 'Visited from Home' : 'Not from Home'}</div>;
}
 

5. 传递参数通过 useNavigate(React Router v6)
 

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

function Home() {
  const navigate = useNavigate();

  const goToAbout = () => {
    navigate('/about', { state: { fromHome: true } });
  };

  return <button onClick={goToAbout}>Go to About</button>;
}
 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com