react路由原理解析[通俗易懂]

react路由原理解析[通俗易懂]原理:在dom渲染完成之后,给window添加  “hashchange”事件监听页面hash的变化,并且在state属性之中添加了route属性,代表当前页面的路由。 1、当点击连接 页面hash改变时,触发绑定在window上的  hashchange事件, 2、在hashchange事件中改变组件的state中的route属性,(react组件的state属性改变时

大家好,又见面了,我是你们的朋友全栈君。

原理: 在dom渲染完成之后,给window 添加   “hashchange” 事件监听页面hash的变化,并且在state属性之中添加了 route属性,代表当前页面的路由。

1、当点击连接  页面hash改变时,触发绑定在window 上的  hashchange 事件,

2、在 hashchange 事件中改变组件的 state中的 route 属性,(react组件的state属性改变时,自动重新渲染页面)

3、页面 随着 state 中的route属性改变自动 根据  不停的hash  给  Child  变量赋值不通的组件,进行渲染

核心代码:

import React
from
‘react’
import { render }
from
‘react-dom’

const
About
=
function () {
return <
div>111</
div>
}
const
Inbox
=
function () {
return <
div>222</
div>
}
const
Home
=
function () {
return <
div>333</
div>
}

class
App
extends
React.
Component {

state
= {
route: window.location.hash.
substr(
1)
}

componentDidMount() {
window.
addEventListener(
‘hashchange’, ()
=> {
this.
setState({
route: window.location.hash.
substr(
1)
})
})
}

render() {
let Child
switch (
this.state.route) {
case
‘/about’: Child
= About;
break;
case
‘/inbox’: Child
= Inbox;
break;
default: Child
= Home;
}

return (
<
div>
<
h1>App</
h1>
<
ul>
<
li><
a
href
=
“#/about”>About</
a></
li>
<
li><
a
href
=
“#/inbox”>Inbox</
a></
li>
</
ul>
<
Child />
</
div>
)
}
}

render(<
App />, document.body)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141862.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月24日 下午10:00
下一篇 2022年5月24日 下午10:20


相关推荐

  • 离散数学谓词逻辑答案_离散数学逻辑符号

    离散数学谓词逻辑答案_离散数学逻辑符号1谓词1.1引入在研究命题逻辑中,原子命题是命题演算中最基本的单位,不再对原子命题进行分解,这样会产生两大缺点:(1)不能研究命题内部的结构,成分和内部逻辑的特征;(2)也不可能表达两个原子命

    2022年8月3日
    9
  • 安卓支付宝抢红包脚本软件

    安卓支付宝抢红包脚本软件软件使用条件 1 安卓手机 2 已经 ROOT3 没有了 ps 软件可能会提示不支持你的分辨率请无视 使用方法 1 下载软件打开 小米手机可能要设置下悬浮窗 2 给予软件 root 权限 3 点启动 4 打开支付宝等到倒计时结束马上按音量 键 5 抢红包结束马上按音量 ps 由于用的是找色代码结束没及时按音量 软件会乱点

    2026年3月19日
    2
  • trill大二层_实施基于TRILL的高校大二层网络

    trill大二层_实施基于TRILL的高校大二层网络龙源期刊网 http www qikan com cn 实施基于 TRILL 的高校大二层网络作者 雷鸣何旸刘毅娟刘晓丽来源 山东工业技术 2015 年第 14 期摘要 实施基于 TRILL 的高校大二层网络 需要先做好底层协议支持 即开启 IS IS 路由协议 然后全局使能 TRILL 协议 再进行接口 VLAN 链路开销等相关信息的配置 随着互联网高速发展 高校的教学 科研 办公等活动也极大地依赖网络来完成 高速

    2026年3月17日
    1
  • Python——sklearn库的安装

    Python——sklearn库的安装Python——sklearn库的安装做个笔记,时间久了,都忘了sklearn库的标准名字——scikit-learn。所以,不要用pipinstallsklearn应该是pipinstallscikit-learn真被自己蠢哭了。说明:有的低版本的sklearn库没有”accuracy”,版本问题,更新一下包就可以哈。…

    2022年10月18日
    5
  • 学弟学妹们,学会霍夫曼编码后,再也不用担心网络带宽了!

    学弟学妹们,学会霍夫曼编码后,再也不用担心网络带宽了!CSDN 的小伙伴们 大家好 我是沉默王二 今天来给大家普及一下霍夫曼编码 HuffmanCodin 一种用于无损数据压缩的熵编码算法 由美国计算机科学家大卫 霍夫曼在 1952 年提出 这么专业的解释 不用问 来自维基百科了 顺带给大家推荐一份 Java 版的 LeetCode 刷题笔记吧 我见过很多牛逼的刷题笔记 有 Go 版的 有 C 版的 唯独没有 Java 版的 所以这次 我感觉你的收藏夹又多了一个吃灰的理由 吃完 300 道 LeetCode 题后 我胖得快炸了 withJ

    2026年3月19日
    2
  • android之JSON 进行网络数据交换「建议收藏」

    android之JSON 进行网络数据交换

    2022年1月22日
    37

发表回复

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

关注全栈程序员社区公众号