首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React路由器文档和重定向与history.push()

React Router 是一个用于在 React 应用程序中实现导航和路由功能的库

安装

首先,确保已经安装了 react-router-dom

代码语言:javascript
复制
npm install react-router-dom

基本用法

要在应用程序中使用 React Router,请在项目的入口文件中引入 BrowserRouter 组件,并将其包装在应用程序的根组件外部:

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
import App from './App';

ReactDOM.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>,
  document.getElementById('root')
);

路由定义

App 组件中,使用 Route 组件定义路由规则:

代码语言:javascript
复制
import React from 'react';
import { Route, Switch } from 'react-router-dom';
import Home from './Home';
import About from './About';

function App() {
  return (
    <Switch>
      <Route exact path="/" component={Home} />
      <Route path="/about" component={About} />
    </Switch>
  );
}

export default App;

重定向

要实现重定向,可以使用 Redirect 组件。例如,当用户访问 /old-path 时,将其重定向到 /new-path

代码语言:javascript
复制
import React from 'react';
import { Route, Switch, Redirect } from 'react-router-dom';

function App() {
  return (
    <Switch>
      <Route exact path="/" component={Home} />
      <Route path="/about" component={About} />
      <Redirect from="/old-path" to="/new-path" />
    </Switch>
  );
}

export default App;

history.push()

history.push() 是一个用于导航到新页面的方法。它可以在组件内部调用,也可以在事件处理程序中调用。例如,当用户点击按钮时,导航到 /about 页面:

代码语言:javascript
复制
import React from 'react';
import { useHistory } from 'react-router-dom';

function Home() {
  const history = useHistory();

  const handleClick = () => {
    history.push('/about');
  };

  return (
    <div>
      <h1>Home Page</h1>
      <button onClick={handleClick}>Go to About</button>
    </div>
  );
}

export default Home;
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

「源码解析 」这一次彻底弄懂react-router路由原理

笔者个人感觉学习react-router,有助于我们学习单页面应用(spa)路由跳转原理,让我们理解从history.push,到组件页面切换的全套流程,使我们在面试的时候不再为路由相关的问题发怵,废话不说...2 react-router初探,揭露路由原理面纱 ①react-router-domreact-routerhistory库三者什么关系 history 可以理解为react-router的核心,...react-router-dom,在react-router的核心基础上,添加了用于跳转的Link组件,histoy模式下的BrowserRouterhash模式下的HashRouter组件等。...3 path:新的网址,必须当前页面处在同一个域。浏览器的地址栏将显示这个地址。...4 Redirect-没有符合的路由,那么重定向 重定向组件, 如果来路由匹配上,会重定向对应的路由。

3.9K40
  • React Router入门指南(包括Router Hooks)

    为了获得React Router的全部功能,我们需要有多个页面链接可以使用。我们已经有了页面(如果需要,也可以使用组件),现在,让我们添加一些链接以能够在页面之间进行切换。...现在,React Router不再使用标签href,而是使用Link来进行切换,而无需重新加载页面。 然后,我们需要添加两条新路线:“关于”“联系方式”,以便您也可以在页面或组件之间进行切换。...但是,我们的路由器存在问题。即使我们切换到其他页面,Home组件也会一直显示。 原因是React Router将检查定义的路径是否以/开头(如果是),它将呈现组件。...顺便说一下,{match:{params:{name}}}props.match.params.name相同。...现在,让我们处理重定向用户的情况。 重定向到另一个页面 React Router还有另一个名为Redirect的组件,正如您猜到的,它可以帮助我们将用户重定向到另一个页面。

    12K20

    转发重定向的区别使用特点_转发重定向的联系

    转发重定向的作用 在Servlet中实现页面的跳转有两种方式:转发重定向 什么是转发 概念 由服务器端进行的页面跳转 原理图 转发的方法 案例 需求 ​ 实现从OneServlet中转发到...TwoServlet 步骤 OneServlet向请求域中添加了一个键值,转发给TwoServlet TwoServlet就从请求域中取出键值,打印到浏览器上。...javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** 请求域相关的方法...原理图 重定向方法 重定向案例 需求 从OneServlet重定向到TwoServlet 步骤 在OneServlet中向请求域中添加键值 使用重定向到TwoServlet,在TwoServlet...无论转发或重定向后续的代码都会执行 小结:重定向转发的区别 区别 转发forward() 重定向sendRedirect() 根目录 包含项目访问地址 没有项目访问地址 地址栏 不会发生变化 会发生变化

    79610

    Redux with Hooks

    前言 React在16.8版本为我们正式带来了Hooks API。什么是Hooks?简而言之,就是对函数式组件的一些辅助,让我们不必写class形式的组件也能使用state其他一些React特性。...有效减少善变的this打交道。 既然Hooks大法这么好,不赶紧上车试试怎么行呢?...于是本人把技术项目的reactreact-dom升级到了16.8.6版本,并按官方建议,渐进式地在新组件中尝试Hooks。...然而,这种方法虽然可行,但却是一种欺骗React的行为(我们明明依赖了来自props的queryFormDataformId),很容易埋坑(见React官方的Hooks FAQ)。...参考 React-Redux官方文档 React官方文档 Preventing rerenders with React.memo and useContext hook 推荐阅读 The History

    3.3K60

    重发重定向有什么区别重定向应用

    重发重定向有什么区别 重发 方式1: request.getRequestDispatcher("new.jsp").forward(request, response);//转发到new.jsp...: 转发是服务器行为,重定向是客户端行为 如何理解重定向转发 重定向,其实是两次request...对于每个32位的数,将它与0x3FFFFFFF进行位运算,取其低30位的数据。...把得到的值0x0000003D进行位运算,再把得到的结果作为下标在字符表中选取字符,再把原数字右移5位进行相同操作,重复进行6次得到6个字符,即组成一个候选短链接地址。...因为链接地址同时使用的是a-z、A-Z0-9这62个字符,把10进制的序号值转化为这个62进制的表示即可得到对应的短链接。

    75520

    升级到React-Router-v6_2023-02-28

    前言 近期完成了公司新项目的开发,相关的技术栈都用到了最新版本,react router 也使用了 v6 的版本,所以借这个机会自己再梳理下 react router v5 v6 的区别,以及 v6...to 属性支持相对位置'..' '.'...'green' : 'blue' })} > Messages 移除Redirect重定向组件 移除的主要原因是不利于 SEO // v5 <Redirect from="/404...path格式,只支持两种动态占位符 路由匹配的区分大小写开启 caseSensitive 所有路径匹配都会忽略 URL 上的尾部斜杠/ 新增 Outlet 组件用于渲染匹配到的子路由 移除Redirect<em>重定向</em>组件...,因为不利于 SEO 新增 useNavigate 替代 useHistory 新增 useRoutes 代替 <em>react</em>-router-config 新增 useSearchParams 来获取<em>和</em>设置

    2.4K40

    React 折腾记 - (3) 结合Mobx实现一个比较靠谱的动态tab水平菜单,同时关联侧边栏

    单个删除删除其他的标签 只有一个时候是不允许关闭,所以也不会显示关闭的按钮,关闭其他也不会影响唯一的 ? ? 多tag换行 ?...---- 基础环境 mobx & mobx-react react-router-dom v4 styled-components react 16.4.x antd 3.8.x 为了保持后台的风格一致化...),再次渲染组件 一键关闭除当前url以外的的所有tab 重定向的时候也会自动展开侧边栏(路由表存在匹配的情况) 可拓展的方向 有兴趣的自行拓展,具体idea如下 比如快速跳转到第一个或者最后一个的快捷菜单等...getSnapshotBeforeUpdate(prevProps, prevState) { const { location, match } = prevProps; // 重定向的时候用到...this.setState({ selectedKeys: [menuItem.key] }); // 设置文档标题

    3.2K20

    React 进阶 - React Router

    整个 React-Router 的核心,里面包括两种路由模式下改变路由的方法,监听路由变化方法等 React-Router 有了 History 路由监听 / 改变的核心,那么需要调度组件负责派发这些路由的更新...# React 路由原理 BrowserHistory 模式 改变路由 通过调用 api 实现的路由跳转,如在 React 应用中调用 history.push 改变路由,本质上是调用 window.history.pushState...方法 window.history.pushState history.pushState(state, title, path) state:一个指定网址相关的状态对象, popstate 事件触发时...的长度不会改变 监听路由 popstate window.addEventListener("popstate", function (e) { console.log(e.state) }) 同一个文档的..." const age = 18 history.push(`/home?

    1.9K21

    扩展嵌入python之重定向输出编译

    Ok,按照之前两篇嵌入扩展python的文章来操作的话,现在已经可以定义自己的模块、在运行时获取异常信息。那么问题来了,在编写程序的过程中,难免有语法错误,如何在运行程序前检查这些错误呢?...重定向的功能实现起来比较方便,先贴这部分程序: static PyObject * aview_write(PyObject *self, PyObject *args) { (void)self...PySys_SetObject("stdout", m); PySys_SetObject("stderr", m); return m; } 相比之前的程序,又添加了writeflush...还有就是在初始化模块时有一些改动,将系统的标准输出标准错误输出做了重定向。运行之前的程序结果如图: ? 这样我们静态检查的报错信息也就可以获得了。接下来介绍编译的方法。

    61830

    React 折腾记 - (2) 实现路由动效过渡,并解决过程中奇奇怪怪的问题

    ---- 基础依赖 styled-components@3.4.2 : 写样式的 react-transition-group@2.4.0 : 路由过渡的,react官方的 react-router-dom...,只能用脱离文档流来解决,所以用position:absolute来负责渲染区域即可 注意父层需要position:relative, 不然会一直往上找相对位置,实在找不到会相对窗口 点击侧边栏,组件一直重复渲染的问题...shouldComponentUpdate来判断URL然后阻止渲染,发现不可行 因为过渡外部用的location.key是随机性的,所以组件每次都会重新渲染 最终的解决方案,是改掉了侧边栏的Link组件,直接用事件绑定(history.push...// 拿到路由相关的信息 const { history, location } = this.props; // 判断我们传入的静态路由表的路径是否路由信息匹配...反之打断函数 if (location.pathname === itemurl) { return; } else { history.push

    1.1K10

    React倒计时功能实现——解耦通用

    React倒计时功能实现——解耦通用 需求分析 需求 在某个页面中需要有一个倒计时的功能,倒计时 5 s,5s钟后跳转到新的界面 分析 首先是实现倒计时功能 其次是实现在每倒计时 1 s后页面上要执行... todoInfo ); } } export default DemoPage; 问题分析 时间设置为全局变量,糟糕的做法, 修改不方便 难于阅读理解...export default DemoPage; 改进后将时间作为参数放到countDown里面,方便随意设置倒计时时间 进一步分析问题: 上面的做法, setState的操作只能写在本组件,本组件紧耦合在一起...,无法实现多组件复用 history.push('/Login') 只能用在umi 框架中,框架紧耦合在一起,无法实现普适应用 进一步改进 针对本问题的需求,可以将业务场景扩大为: 倒计时功能...方案 将函数作为参数传递到countDown()方法中 将 doSomethingDuringCountDown() doSomethingAfterCountDown()作为参数传递到countDown

    1.3K41
    领券