前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >react路由原理解析[通俗易懂]

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

作者头像
全栈程序员站长
发布2022-09-01 16:08:21
4630
发布2022-09-01 16:08:21
举报

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

原理: 在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.cn/141862.html原文链接:https://javaforall.cn

=

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档