react 路由详解

react 路由详解简述 路由的本质就是在一个页面上,通过交互,不刷新页面但能改变页面视图的一种方法。 react-router就是一个扩展react从而实现路由的第三方库 router实例在线演示:https://scrimba.com/scrim/cNq8MzCr 单页面应用 单页面应用是指整个系统的前端只有一个页

react

简述

  路由的本质就是在一个页面上,通过交互,不刷新页面但能改变页面视图的一种方法。

  react-router就是一个扩展react从而实现路由的第三方库

  router实例在线演示:https://scrimba.com/scrim/cNq8MzCr

单页面应用

  单页面应用是指整个系统的前端只有一个页面,跳转到别的页面是通过切换页面上组件的形式进行跳转,在加载页面时一般会将所有组件的数据进行加载,所以在切换的时候不需要刷新,用户体验也会更好

安装依赖

  通过npm进行依赖安装

npm install react-router-dom

基本使用

  在你的index.js中,引入BrowserRouter, Route, Switch等路由相关资源

import ReactDOM from 'react-dom'
import { BrowserRouter, Route, Switch } from "react-router-dom"

  用BrowserRouter把你的App组件包裹起来

<BrowserRouter>
    <App />
</BrowserRouter>

  在app组件中添加Switch标签,他的作用是让页面每次只渲染一个组件

  然后在Switch标签里即可添加Router标签,一个Router即定义了一个路由关系,path和组件相对应,如果在后面加了exact则表示只有完全匹配才会跳转,switch标签的意思是从头到尾发现有一个匹配上的router就中断了

  其中没有path的路由是处理错误的路由,用于专门展示错误信息

function App() {
    return (
        <main>
            <Navbar />
            <Switch>
                <Route path="/" component={Home} exact />
                <Route path="/about" component={About} />
                <Route path="/shop" component={Shop} />
                <Route component={Error} />
            </Switch>
        </main>
    )
}

  设置完这一步,我们就可以通过浏览器的URl进行组件的切换

  若想使用按钮、链接等方式进行组件切换的交互,可以使用Link标签把一些触发切换的元素包裹住,这样就能进行路由切换了

在路由中传递参数

  在Route标签中的path属性中,url使用/:参数名的方式进行书写,例如:

<Route path="/about/:name" component={About} />

  在对应组件中,我们就可以通过 props.match.params.参数名 的方式接受到路由传递过来的参数

  也可以使用下面说到的 useParams 进行参数的获取

router hooks

  Router hooks 可以让我们更加容易地访问到 history,location,路由参数 等等

  hooks可以在 https://reactrouter.com/en/main/start/overview 进行查阅,这里列出比较详细的几种

useHistory

  返回windows.history

import { useHistory } from "react-router-dom";

const Contact = () => {
  const history = useHistory();
  return (
    <Fragment>
      <h1>Contact</h1>
      <button onClick={() => history.push("/")}>Go to home</button>
    </Fragment>
  );
};

useParams

  返回上面说的参数,代码和上方类似

useLocation

  返回当前 URL 的 location 对象,代码和上方类似

References

  https://www.freecodecamp.org/chinese/news/react-router-in-5-minutes/

  https://juejin.cn/post/6948226424427773983

 

今天的文章react 路由详解分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/51114.html

(0)
编程小号编程小号
上一篇 2023-08-24 22:30
下一篇 2023-08-24

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注