使用 React Router v6 进行布局

第 1 步:设置 react router v6

复制代码
npm i -d react-router-dom@latest

第2步:定义路由结构

接下来,在 app.js 文件中定义路由的结构。我们将为主页、关于页面和联系页面创建路由,并将它们与相应的组件关联起来。

复制代码
// app.js
import react from 'react';
import { browserrouter as router, routes, route } from 'react-router-dom';
import layout from './layout';
import home from './home';
import about from './about';
import contact from './contact';

function app() {
  return (
    <router><routes><route path="/" element="{&lt;layout"></route>}&gt;
          <route index element="{&lt;home"></route>} /&gt;
          <route path="/about" element="{&lt;about"></route>} /&gt;
          <route path="/contact" element="{&lt;contact"></route>} /&gt;
        
      </routes></router>
  );
}

export default app;

第三步:创建布局组件

现在,让我们创建一个布局组件(layout.js),它将包含我们的共享标题和主要内容区域。

复制代码
// layout.js
import react from 'react';
import { outlet } from 'react-router-dom';

function layout() {
  return (
    <div>
      <header><h1>my app</h1>
        <nav><ul>
<li><a href="/">home</a></li>
            <li><a href="/about">about</a></li>
            <li><a href="/contact">contact</a></li>
          </ul></nav></header><main><outlet></outlet></main>
</div>
  );
}

export default layout;

第四步:创建页面组件

为主页、关于页面和联系页面创建单独的组件。这些组件将代表每个页面的内容。

家居组件

复制代码
// home.js
import react from 'react';

function home() {
  return (
    <div>
      <h2>home page</h2>
      <p>welcome to the home page!</p>
    </div>
  );
}

export default home;

关于组件

复制代码
// about.js
import react from 'react';

function about() {
  return (
    <div>
      <h2>about page</h2>
      <p>learn more about us!</p>
    </div>
  );
}

export default about;

接触元件

复制代码
// Contact.js
import React from 'react';

function Contact() {
  return (
    <div>
      <h2>Contact Page</h2>
      <p>Reach out to us!</p>
    </div>
  );
}

export default Contact;

结论

恭喜!您已经使用 react router v6 成功构建了布局,允许您在不同页面之间导航,同时在整个应用程序中保持一致的布局。这种方法为具有多个路由的 react 应用程序提供了一个干净且有组织的结构。尝试添加更多路由和组件以进一步增强您的应用程序!

相关推荐
名字还没想好☜10 分钟前
React 文件上传实战:预览 URL 回收、多文件逐个进度与拖拽放置区踩坑
前端·react·next.js
console.log('npc')13 分钟前
06 — Model 层:数据模型与操作
前端·后端·node.js·express
linux_cfan30 分钟前
16 · `custom-media-element`:属性拦截与转发
前端·javascript·音视频
右耳朵猫AI40 分钟前
Web前端周刊2026W38 | React 19.3 发布、StyleX 深潜、jsdom 30.1 提速
前端·javascript·react.js·typescript·node.js
落魄大学生之流水线上谋生计41 分钟前
GreenLife Carbon · OpenHarmony 智慧低碳生态平台
javascript
人工智能培训1 小时前
大语言模型:从语言理解到通用智能的跃迁
linux·服务器·前端·人工智能
一拳不是超人1 小时前
做独立开发三个月,我的第一个产品终于有了 1000 个用户
前端·程序员
Amos_Web2 小时前
Rspack 源码解析(十):Hash 与 Asset 生成
前端·rust·源码阅读
福兮说2 小时前
用 IndexedDB 存用户的文件,我踩过的五个坑
前端·javascript