react路由原理解析

原理: 在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)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITzhongzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值