
在使用react router `react-router-dom`时,将多个组件分配给相同的路径(如 `path='/'`)会导致只有第一个匹配的组件被渲染。这是因为`routes`组件会查找并渲染第一个与当前url匹配的`route`。要解决此问题,应将所有需要在同一路径下显示的组件聚合到一个jsx片段中,作为单个`route`的`element`属性,或将其封装成一个独立的父组件。
在React应用中,react-router-dom库通过BrowserRouter、Routes和Route等组件来管理客户端路由。其中,Routes组件扮演着关键角色,它的主要职责是遍历其内部定义的Route组件,并渲染第一个与当前URL路径匹配的Route。
当开发者尝试为同一个路径(例如根路径 path='/')定义多个Route组件时,例如:
<Routes>
<Route exact path='/' element={<Headline />}></Route>
<Route exact path='/' element={<Dishes />}></Route>
<Route exact path='/' element={<Investor />}></Route>
{/* ...更多相同的路径 */}
<Route exact path='/about' element={<About />}></Route>
</Routes>在这种情况下,Routes组件会首先匹配到
如果目标是在同一路径下同时显示多个组件,最直接的方法是将所有这些组件包裹在一个JSX片段(React.Fragment 或其简写 >)中,然后将这个片段作为单个 Route 的 element 属性值。
这种方法确保了 Routes 组件只匹配一个 Route,但该 Route 的 element 属性包含并渲染了所有预期的子组件。
示例代码:
import React from 'react';
import N*bar from './components/N*bar';
import About from './components/About';
import Headline from './components/Headline';
import Dishes from './components/Dishes';
import Investor from './components/Investor';
import Customer from './components/Customer';
import Order from './components/Order';
import Footer from './components/Footer';
import './style.css';
import {
BrowserRouter as Router,
Routes,
Route,
} from "react-router-dom";
function App() {
return (
<Router>
<N*bar />
<Routes>
<Route
path='/' // 注意:这里不再需要 'exact',因为它是唯一匹配 '/' 的路由
element={(
<> {/* 使用React片段包裹所有组件 */}
<Headline />
<Dishes />
<Investor />
<Customer />
<Order />
<Footer />
</>
)}
/>
<Route path='/about' element={<About />} />
</Routes>
</Router>
);
}
export default App;注意事项:
为了提高代码的可读性、可维护性和复用性,更推荐的做法是将所有需要在同一路径下显示的组件封装到一个独立的父组件中。然后,将这个父组件作为单个 Route 的 element 属性值。
达奇AI论文写作
达奇AI论文辅助写作平台,在校学生、职场精英都在用的AI论文辅助写作平台
106
查看详情
步骤:
创建 Home 组件: 创建一个名为 Home (或其他有意义的名称) 的新组件,并在其中渲染所有需要在首页显示的子组件。
// components/Home.jsx
import React from 'react';
import Headline from './Headline';
import Dishes from './Dishes';
import Investor from './Investor';
import Customer from './Customer';
import Order from './Order';
import Footer from './Footer';
const Home = () => (
<>
<Headline />
<Dishes />
<Investor />
<Customer />
<Order />
<Footer />
</>
);
export default Home;在 App 组件中使用 Home 组件: 在 App.js 中导入 Home 组件,并将其作为 path='/' 路由的 element。
import React from 'react';
import N*bar from './components/N*bar';
import About from './components/About';
import Home from './components/Home'; // 导入 Home 组件
import './style.css';
import {
BrowserRouter as Router,
Routes,
Route,
} from "react-router-dom";
function App() {
return (
<Router>
<N*bar />
<Routes>
<Route path='/' element={<Home />} /> {/* 使用 Home 组件 */}
<Route path='/about' element={<About />} />
</Routes>
</Router>
);
}
export default App;优点:
当使用 react-router-dom 配置路由时,务必理解 Routes 组件的工作原理:它只会渲染第一个匹配的 Route。因此,如果需要在同一个路径下显示多个组件,应该采取以下两种策略之一:
第二种方法通常是更推荐的实践,因为它能带来更好的代码组织、可读性和可维护性,尤其是在项目规模增大时。
以上就是React Router同一路径渲染多个组件的策略与实践的详细内容,更多请关注其它相关文章!
# 创建一个
# 金属网站建设美丽图片
# 天津家居营销推广平台
# 优化网站推广怎么样
# 淄博服装网站建设公司
# seo推广值得信赖吗
# cdn seo 影响
# 北京网站优化及推广公司
# 包头百度关键词排名
# 高邑网站优化价格
# 李沧区网站优化公司招聘
# 自己的
# 应如何
# 在同一
# css
# 如何使用
# 首页
# 复用
# 论文写作
# 第一个
# 多个
# html元素
# 路由
# app
# js
# html
# react
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
J*aScript包管理器_Npm与Yarn对比
《蓝色星原:旅谣》坐骑获取攻略
发布小红书怎么屏蔽粉丝?屏蔽粉丝能看到吗?
SQLAlchemy 2.0 与 Pydantic 模型类型安全集成指南
《七读免费小说》开通会员方法
12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案
Flask 应用中图片动态更新与上传:实现客户端定时刷新与服务器端文件管理
网页版网易云音乐入口_网易云音乐在线官网登录
win11关机几秒又自己开机 Win11关机自动重启问题修复
谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问
怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】
mysql如何回滚事务_mysql ROLLBACK事务回滚方法
学习通网页版个人登录_学习通网页版个人账户登录入口
使用jQuery精确检测除指定元素外任意位置的点击事件
漫蛙manwa2网页版书签同步链接_漫蛙manwa多设备登录入口
VB表达式书写规则解析
Sublime怎么配置YAML文件格式化_Sublime YAML Formatter插件教程
mysql离线安装后如何启动_mysql离线安装完成后启动服务的方法
《花瓣》创建专辑方法
123网页端官方登录页 123邮箱网页版即时通讯服务
汽水音乐网页版登录 汽水音乐网页端官方入口
手机坏了微信聊天记录怎么导出来 新手机恢复聊天记录技巧
大众点评了却看不到是怎么回事
TikTok私信无法发送表情怎么办 TikTok消息表情发送修复方法
抖音怎么解除第三方绑定_抖音解除第三方平台绑定方法介绍
抖音网页版官方链接 抖音网页版官网链接入口
易车网官网直达入口 易车网在线登录入口
小米手机屏幕失灵乱跳怎么办 屏幕触控问题自检与临时解决方法【应急】
研招网官方网站正版登录网址_中国研究生招生信息网官网首页
如何解决Casbin日志与应用日志不统一的问题,使用casbin/psr3-bridge实现无缝集成
虫虫助手如何更新游戏
动漫岛汉化官网网 动漫岛官方动漫汉化地址
谷歌浏览器如何查找和删除恶意软件 谷歌浏览器内置安全清理工具使用教程
TikTok视频播放中断怎么办 TikTok播放异常修复方法
mysql触发器如何编写_mysql触发器编写规范与代码示例讲解
如何使用 Optional 类型并满足 Pylint 的类型检查
小红书网页版首页入口 小红书网页版电脑端官方登录链接
如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践
德邦物流在线查询系统 德邦快递货物运输追踪
lol小红书怎么|直播|?lol小红书|直播|是什么意思?
C++如何将字符串转换为大写或小写_C++ transform函数的使用技巧
六级准考证号怎么查_四六级准考证查询入口官网
iPhone16Plus参数配置如何调整声音_iPhone16Plus参数配置声音调整详细方法
快递查询,一键速查
不吃碳水化合物是健康减肥的好办法吗
TikTok笔记文字无法编辑如何解决 TikTok笔记文字编辑优化方法
苹果电脑如何快速截图并编辑 苹果电脑截屏标注快捷操作
Animex动漫社正版在线入口 Animex动漫社动漫官方观看网
win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】
PHP utf8_encode 字符编码转换陷阱与解决方案
2025-11-24
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。