react hooks 学习之react router v6 路由表配置

/ 如果你是在ts中,那么这个这个文件名是router.ts那么这个<Home/>这里会报eslint错误,所以为了解决这个错误,直接改成router.tsx就行

import { RouteObject } from 'react-router-dom';
import Home from '../page/Home';
import About from '../page/About';

// react router v6·路由配置
const routes: RouteObject[] = [
  {
    path: '/',
    element: <Home />,
  },
  {
    path: '/about',
    element: <About />,
  },
  {
    path: '*',
    element: <div>404</div>,
  }
];

export default routes;

如果说你非要用.ts也行,就像下边这样,可以避免eslint报错

// elements.tsx
import React from 'react';
import Home from '../page/Home';
import About from '../page/About';

export const HomeElement = <Home />;
export const AboutElement = <About />;

// routes.ts
import { RouteObject } from 'react-router-dom';
import { HomeElement, AboutElement } from './elements';

const routes: RouteObject[] = [
  {
    path: '/',
    element: HomeElement,
  },
  {
    path: '/about',
    element: AboutElement,
  },
];

export default routes;

然后就是app.tsx中渲染问题,v6版本的useRoutes很好用

// App.tsx
import React from 'react';
import { useRoutes } from 'react-router-dom';
import routes from './router'; // 导入路由配置

function App() {
  const routing = useRoutes(routes);
  return (
    <div>
      {routing}
    </div>
  );
}

export default App;

React Router v6 中,路由表的定义方式有所改变。现在可以使用 `<Routes>` 组件来定义路由表,每个路由通过 `<Route>` 组件来定义。以下是一个示例路由表: ```jsx import { Routes, Route } from 'react-router-dom'; import Home from './components/Home'; import About from './components/About'; import Contact from './components/Contact'; function App() { return ( <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/contact" element={<Contact />} /> </Routes> ); } export default App; ``` 在上面的示例中,我们定义了三个路由:`/`,`/about` 和 `/contact`,每个路由都对应一个组件。 `<Routes>` 组件是路由表的根组件,它包含所有 `<Route>` 组件。 `<Route>` 组件的 `path` 属性指定了该路由的 URL 路径, `element` 属性指定了该路由对应的组件。 需要注意的是,`<Route>` 组件没有了 `component` 属性,这是因为在 React Router v6 中,路由组件不再是直接通过 `component` 属性指定,而是通过 `element` 属性指定。使用 `element` 属性可以让路由组件更加灵活,可以是一个组件、一个函数或一个 React 元素。如果需要传递 props 到路由组件,可以使用 `route` 属性,例如: ```jsx <Route path="/products/:id" element={<ProductDetails />} route={{ someProp: 'someValue' }} /> ``` 在 `ProductDetails` 组件中可以通过 `props.route.someProp` 来获取该值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值