”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 React Router 进行导航 React Js 第一部分 React 应用程序中的路由指南

使用 React Router 进行导航 React Js 第一部分 React 应用程序中的路由指南

发布于2024-11-06
浏览:385

Navigating with React Router React Js Part A Guide to Routing in React Applications

欢迎回到我们的 React 系列!在之前的文章中,我们介绍了组件、状态、道具和事件处理等基本概念。现在,是时候使用 React Router 探索 React 应用程序中的路由了。路由允许您在应用程序内的不同视图或组件之间导航,从而创建无缝的用户体验?.

什么是 React 路由器?

React Router 是一个功能强大的库,可以在 React 应用程序中实现路由。它允许您在应用程序中定义多个路由并根据 URL 路径呈现特定组件。此功能对于构建导航不需要重新加载整页的单页应用程序 (SPA) 至关重要。

安装 React Router
首先,您需要安装 React Router。您可以使用 npm 来执行此操作:

npm install react-router-dom

设置基本路由

让我们设置一个具有多个路由的简单应用程序。我们将创建一个带有主页、关于页面和联系页面的应用程序。

1.创建基本组件
首先,创建三个组件:主页、关于和联系方式。

// Home.js
import React from 'react';

const Home = () => {
    return 

Home Page

; }; export default Home; // About.js import React from 'react'; const About = () => { return

About Page

; }; export default About; // Contact.js import React from 'react'; const Contact = () => { return

Contact Page

; }; export default Contact;

2.设置路由器
现在,让我们在主应用程序文件(通常是 App.js)中设置路由器。

import React from 'react';
import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom';
import Home from './Home';
import About from './About';
import Contact from './Contact';

const App = () => {
    return (
        
            
            
                
                
                
            
        
    );
};

export default App;

解释:

  • Router:BrowserRouter组件包装了整个应用程序,实现路由。
  • Link:Link 组件用于创建导航链接,无需重新加载页面即可更改 URL。
  • Route:Route组件定义路径以及路径匹配时要渲染的组件。
  • Switch:Switch组件确保一次只渲染一条路线。

在页面之间导航
设置完成后,您现在可以通过单击导航菜单中的链接在主页、关于和联系页面之间导航。 React Router 将处理 URL 更改并渲染适当的组件,而无需刷新页面。

路由参数
您还可以使用参数定义路由,从而允许传递动态数据。例如,我们创建一个 User 组件,根据 URL 中的用户 ID 显示用户信息。

1.创建用户组件
用户.js:

import React from 'react';
import { useParams } from 'react-router-dom';

const User = () => {
    const { userId } = useParams();
    return 

User ID: {userId}

; }; export default User;

2.更新路由器
在 App.js 中添加 User 组件的路由:



嵌套路由

React Router 还支持嵌套路由,它允许您在父组件中渲染子路由。这对于构建复杂的布局很有用。

嵌套路由示例:

  1. 创建具有嵌套路由的 Dashboard 组件:
// Dashboard.js
import React from 'react';
import { Route, Link, Switch } from 'react-router-dom';
import Settings from './Settings';
import Profile from './Profile';

const Dashboard = () => {
    return (
        

Dashboard

); }; export default Dashboard;
  1. 更新您的 App.js 以包含仪表板路线:

现在,导航到 /dashboard/profile 或 /dashboard/settings 将在仪表板中呈现相应的组件。


在这篇文章中,我们探讨了如何使用 React Router 在 React 应用程序中实现路由。我们介绍了设置基本路由、在页面之间导航、使用路由参数以及创建嵌套路由。

利用这些概念,您可以为 React 应用程序创建结构化导航系统,从而增强用户体验并实现动态内容渲染。

在下一篇文章中,我们将深入研究 React Hooks 的使用,重点关注 useEffect 以及它如何管理功能组件中的副作用。敬请关注!

版本声明 本文转载于:https://dev.to/kyydev/navigating-with-react-router-react-js-part-4-a-guide-to-routing-in-react-applications-1ikb?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Java的Map.Entry和SimpleEntry如何简化键值对管理?
    Java的Map.Entry和SimpleEntry如何简化键值对管理?
    A Comprehensive Collection for Value Pairs: Introducing Java's Map.Entry and SimpleEntryIn Java, when defining a collection where each element com...
    编程 发布于2025-05-09
  • C++20 Consteval函数中模板参数能否依赖于函数参数?
    C++20 Consteval函数中模板参数能否依赖于函数参数?
    [ consteval函数和模板参数依赖于函数参数在C 17中,模板参数不能依赖一个函数参数,因为编译器仍然需要对非contexexpr futcoriations contim at contexpr function进行评估。 compile time。 C 20引入恒定函数,必须在编译时进行...
    编程 发布于2025-05-09
  • 在Oracle SQL中如何提取下划线前的子字符串?
    在Oracle SQL中如何提取下划线前的子字符串?
    [ 在oracle sql 解决方案: Explanation:SUBSTR function extracts a substring starting from the specified position (0) and continuing for a specified length.IN...
    编程 发布于2025-05-09
  • PHP SimpleXML解析带命名空间冒号的XML方法
    PHP SimpleXML解析带命名空间冒号的XML方法
    在php 很少,请使用该限制很大,很少有很高。例如:这种技术可确保可以通过遍历XML树和使用儿童()方法()方法的XML树和切换名称空间来访问名称空间内的元素。
    编程 发布于2025-05-09
  • 如何正确使用与PDO参数的查询一样?
    如何正确使用与PDO参数的查询一样?
    在pdo 中使用类似QUERIES在PDO中的Queries时,您可能会遇到类似疑问中描述的问题:此查询也可能不会返回结果,即使$ var1和$ var2包含有效的搜索词。错误在于不正确包含%符号。通过将变量包含在$ params数组中的%符号中,您确保将%字符正确替换到查询中。没有此修改,PDO...
    编程 发布于2025-05-09
  • 在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    编程 发布于2025-05-09
  • 为什么使用Firefox后退按钮时JavaScript执行停止?
    为什么使用Firefox后退按钮时JavaScript执行停止?
    导航历史记录问题:JavaScript使用Firefox Back Back 此行为是由浏览器缓存JavaScript资源引起的。要解决此问题并确保在后续页面访问中执行脚本,Firefox用户应设置一个空功能。 警报'); }; alert('inline Alert')...
    编程 发布于2025-05-09
  • Go语言垃圾回收如何处理切片内存?
    Go语言垃圾回收如何处理切片内存?
    Garbage Collection in Go Slices: A Detailed AnalysisIn Go, a slice is a dynamic array that references an underlying array.使用切片时,了解垃圾收集行为至关重要,以避免潜在的内存泄...
    编程 发布于2025-05-09
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-05-09
  • Go语言如何动态发现导出包类型?
    Go语言如何动态发现导出包类型?
    与反射软件包中的有限类型的发现能力相反,本文探索了替代方法,探索了在Runruntime。go import( “ FMT” “去/进口商” ) func main(){ pkg,err:= incorter.default()。导入(“ time”) 如果err...
    编程 发布于2025-05-09
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-05-09
  • Java为何无法创建泛型数组?
    Java为何无法创建泛型数组?
    通用阵列创建错误 arrayList [2]; JAVA报告了“通用数组创建”错误。为什么不允许这样做?答案:Create an Auxiliary Class:public static ArrayList<myObject>[] a = new ArrayList<myO...
    编程 发布于2025-05-09
  • 您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    在javascript console 中显示颜色是可以使用chrome的控制台显示彩色文本,例如红色的redors,for for for for错误消息?回答是的,可以使用CSS将颜色添加到Chrome和Firefox中的控制台显示的消息(版本31或更高版本)中。要实现这一目标,请使用以下模...
    编程 发布于2025-05-09
  • 为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    在CSS 问题:不正确的代码: 全球范围将所有余量重置为零,如提供的代码所建议的,可能会导致意外的副作用。解决特定的保证金问题是更建议的。 例如,在提供的示例中,将以下代码添加到CSS中,将解决余量问题: body H1 { 保证金顶:-40px; } 此方法更精确,避免了由全局保证金重置引...
    编程 发布于2025-05-09
  • Java中假唤醒真的会发生吗?
    Java中假唤醒真的会发生吗?
    在Java同步中伪装唤醒的概念已经是讨论的主题。尽管存在这种行为的潜力,但问题仍然存在:它们实际上是在实践中发生的吗? Linux的唤醒机制根据Wikipedia关于伪造唤醒的文章,linux实现了pthread_cond_wait()功能的Linux实现,利用了Futex System Call...
    编程 发布于2025-05-09

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3