前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React 路由跳转

React 路由跳转

作者头像
zhouzhouya
发布2023-11-08 09:23:04
1340
发布2023-11-08 09:23:04
举报
文章被收录于专栏:一名前端开发一名前端开发

某些定义的理解

react-router 的理解

  1. react 的一个插件库
  2. 专门用来实现一个 SPA 应用
  3. 基于 react 的项目基本都会用到此库

SPA 的理解

  1. 单页 Web 应用(single page web application,SPA)
  2. 整个应用只有一个完整的页面
  3. 点击页面中的链接不会刷新页面, 本身也不会向服务器发请求
  4. 当点击路由链接时, 只会做页面的局部更新
  5. 数据都需要通过 ajax 请求获取, 并在前端异步展现

路由的理解

  1. 什么是路由? a. 一个路由就是一个映射关系(key:value) b. key 为路由路径, value 可能是 function/component
  2. 路由分类 a. 后台路由: node 服务器端路由, value 是 function, 用来处理客户端提交的请求并返回一个响应数据 b. 前台路由: 浏览器端路由, value 是 component, 当请求的是路由 path 时, 浏览器端前没有发送 http 请求,但界面会更新显示对应的组件
  3. 后台路由 a. 注册路由: router.get(path, function(req, res)) b. 当 node 接收到一个请求时, 根据请求路径找到匹配的路由, 调用路由中的函数来处理请求, 返回响应数据
  4. 前端路由 a. 注册路由: b. 当浏览器的 hash 变为#about 时, 当前路由组件就会变为 About 组件

前端路由的实现

history 库 a. 网址: github.com/ReactTraini… b. 管理浏览器会话历史(history)的工具库 c. 包装的是原生 BOM 中 window.history 和 window.location.hash

history API a. History.createBrowserHistory(): 得到封装 window.history 的管理对象 b. History.createHashHistory(): 得到封装 window.location.hash 的管理对象 c. history.push(): 添加一个新的历史记录 d. history.replace(): 用一个新的历史记录替换当前的记录 e. history.goBack(): 回退到上一个历史记录 f. history.goForword(): 前进到下一个历史记录 g. history.listen(function(location){}): 监视历史记录的变化

相关代码

代码语言:javascript
复制
<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>history test</title>  
</head>  
<body>  
    <p><input type="text"></p>  
    <a href="/test1" onclick="return push('/test1')">test1</a><br><br>  
    <button onClick="push('/test2')">push test2</button><br><br>  
    <button onClick="back()">回退</button><br><br>  
    <button onClick="forword()">前进</button><br><br>  
    <button onClick="replace('/test3')">replace test3</button><br><br>  
<script type="text/javascript"  
     src="https://cdn.bootcss.com/history/4.7.2/history.js"></script>  
<script type="text/javascript">  
    let history = History.createBrowserHistory() //  方式一  
    // history = History.createHashHistory() //  方式二  
    // console.log(history)  
    function push (to) {  
        history.push(to)  
        return false  
    }
    function back() {  
        history.goBack()  
    }  
    function forword() {  
        history.goForward()  
    }  
    function replace (to) {  
        history.replace(to)  
    }  
    history.listen((location) => {  
        console.log('请求路由路径变化了', location)  
    })  
</script>  
</body>  

react-router 相关 API

组件

  1. <BrowserRouter>
  2. <HashRouter>
  3. <Route>
  4. <Redirect>
  5. <Link>
  6. <NavLink>
  7. <Switch>

其它

  1. history 对象
  2. match 对象
  3. withRouter 函数
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 某些定义的理解
    • react-router 的理解
      • SPA 的理解
        • 路由的理解
          • 前端路由的实现
          • react-router 相关 API
            • 组件
              • 其它
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档