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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据库设计之学生选课系统数据流图_学生选课管理系统

    数据库设计之学生选课系统数据流图_学生选课管理系统版权声明:对于本博客所有原创文章,允许个人、教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者、出处及本声明。  博客地址:http://blog.csdn.net/shuxiao9058  原始作者:季亚一、概要设计1.1目的和意义  随着无纸化办公的普遍实现,信息的自动处理以及网络式的信息交互方式已经被人们广泛应用

    2022年9月25日
  • idea修改快捷键方法总结

    前言:使用idea也有一短时间了(算算也快2个月),在快捷键方面常用的基本上都熟悉了,现在有时间总结一下修改快捷键的方法,这对于idea老鸟来说简直是小菜,但是对于菜鸟来还是有些帮助的一:切换快捷键注意:idea内置的许多IDE的快捷键,假如你是从其他IDE转过来的,但是有不想放弃自己以前已经习惯的那套快捷键。那么你可以直接切换到你以前IDE的快捷键,方法如下:1.打开设置中心:file–>Se

    2022年4月5日
  • 学习 Web 开发技术的16个最佳教程网站和博客

    学习 Web 开发技术的16个最佳教程网站和博客互联网经过这么多年的发展,已经出现了众多的Web开发技术,像.Net/Java/PHP/Python/Ruby等等。对于Web开发人员来说,不管是初学者还是有一定经验的开发人员都需要时刻学

    2022年8月6日
  • myeclipse 的 svn插件安装 —– myeclipse2017,2018

    myeclipse 的 svn插件安装 —– myeclipse2017,20181.下载site-1.10.13-1.9.x  官方版:http://subclipse.tigris.org/files/documents/906/49486/site-1.10.13-1.9.x.zip(点击直接下载)2.打开压缩包会发现目录结构如下:3.将features文件夹中的文件复制到Myeclipse安装目录中的features文件夹中,…

    2022年7月20日
  • linux环境下安装nginx步骤

    linux环境下安装nginx步骤

    2021年10月14日
  • eclipse使用jrebel

    eclipse使用jrebeljrebel 注:以下都是网上收集整理的,可能不全,仅限于学习和研究使用。 JavaRebel是一个工具,主要是用于热加载,比如说在Tomcat之类的应用服务器中,更新了class或者某些资源文件,使用了JRebel之后,就不需要重新启动应用服务器。这里有一点先声明一下,本文只是激活成功教程仅限于学习和研究使用,勿用于其他用途。下载地址:http://www.zeroturnar…

    2022年6月18日

发表回复

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

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