For AI agents: the complete documentation index is available at /next/zh/llms.txt, the full documentation bundle is available at /next/zh/llms-full.txt, and this page is available as Markdown at /next/zh/react/routing/react-router.md.
  • 简体中文
  • React Router

    通过 React Router 来实现“单页内路由”。

    安装依赖

    由于 ReactLynx 目前只支持 React 17 的 API,因此需要安装 react-router v6 版本。

    npm
    yarn
    pnpm
    bun
    deno
    npm install react-router@6

    创建路由

    通过渲染 <Routes><Route> 来配置路由,这些路由将 URL 与 ReactLynx 组件关联起来。

    import { root } from '@lynx-js/react';
    import { MemoryRouter, Routes, Route } from 'react-router';
    
    import { App } from './App.jsx';
    import { Home } from './Home.jsx';
    
    root.render(
      <MemoryRouter>
        <Routes>
          <Route path="/" element={<App />} />
          <Route path="/home" element={<Home />} />
        </Routes>
      </MemoryRouter>,
    );
    
    if (import.meta.webpackHot) {
      import.meta.webpackHot.accept();
    }

    更多细节请参考 React Router - Routing

    路由跳转

    目前 ReactLynx 内还没有 <Link> 或者 <NavLink>,可以通过 useNavigate 来在路由间进行跳转。

    import { useNavigate } from 'react-router';
    
    export function App() {
      const nav = useNavigate();
    
      return (
        <view>
          <text bindtap={() => nav('/home')}>Navigate to Home</text>
        </view>
      );
    }

    获取 URL 内容

    路由参数

    路由参数是从动态片段解析出来的值。

    <Route path="/concerts/:city" element={<City />} />

    在上面的例子中 :city 就是一个动态片段,通过 useParams 可以获取到其中的值。

    import { useParams } from 'react-router';
    
    function City() {
      let { city } = useParams();
      let data = useFakeDataLibrary(`/api/v2/cities/${city}`);
    }

    更多信息请参考 React Router - useParams

    Location 对象

    React Router 创建了一个自定义的 location 对象,其中包含一些可以通过 useLocation 访问的有用信息。

    import { useEffect } from '@lynx-js/react';
    import { useLocation } from 'react-router';
    
    function useAnalytics() {
      let location = useLocation();
      useEffect(() => {
        sendFakeAnalytics(location.pathname);
      }, [location]);
    }

    更多信息请参考 React Router - useLocation

    除非另有说明,本项目采用知识共享署名 4.0 国际许可协议进行许可,代码示例采用 Apache License 2.0 许可协议进行许可。