使用 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 应用程序提供了一个干净且有组织的结构。尝试添加更多路由和组件以进一步增强您的应用程序!

相关推荐
小周同学@35 分钟前
谈谈对this的理解
开发语言·前端·javascript
Wiktok39 分钟前
Pyside6加载本地html文件并实现与Javascript进行通信
前端·javascript·html·pyside6
一只小风华~43 分钟前
Vue:条件渲染 (Conditional Rendering)
前端·javascript·vue.js·typescript·前端框架
柯南二号44 分钟前
【大前端】前端生成二维码
前端·二维码
程序员码歌1 小时前
明年35岁了,如何破局?说说心里话
android·前端·后端
博客zhu虎康2 小时前
React Hooks 报错?一招解决useState问题
前端·javascript·react.js
灰海2 小时前
vue中通过heatmap.js实现热力图(多个热力点)热区展示(带鼠标移入弹窗)
前端·javascript·vue.js·heatmap·heatmapjs
王源骏3 小时前
LayaAir鼠标(手指)控制相机旋转,限制角度
前端
大虾写代码3 小时前
vue3+TS项目配置Eslint+prettier+husky语法校验
前端·vue·eslint
wordbaby3 小时前
用 useEffectEvent 做精准埋点:React analytics pageview 场景的最佳实践与原理剖析
前端·react.js