React -- 自己实现一个react-router-dom里面的一些组件(简单路由)

这篇博客介绍了如何自己实现React的HashRouter组件和简单路由功能,利用window的hashchange事件监听/#/后的哈希变化。内容涵盖location.pathname、history.push、match.url等关键属性的实现,并使用context进行父子组件通信。还提到了Route、Link、Switch组件的构建,以及pathtoregexp库的应用。通过创建一个存储用户信息并展示的简单应用,展示了路由的实际运用。
摘要由CSDN通过智能技术生成

本次主要实现的是Hash路由,也就是监听/#/后面的hash值得变化。

使用过react的都知道,this.props上面有一个比较重要的属性location,match, history等,这一次我们实现里面的几个简单属性,用于完成路由,如下:

location: {pathname } history: { push}  match: { url, path, params}

由于设计到父子组件传递,所有我们用到了context.

对于hash的改变我们可以在window注册hashchange事件。

HashRouter组件

import React, { Component } from "react";
import RouteContext from "./RouteContext";
 

export default class HashRouter extends Component {
    constructor (props) {
        super(props);
        this.state = { location: {}, history: {}, match: {}};
        this.handleHash = this.handleHash.bind(this);
    }
    handleHash () {
        const hash = window.location.hash.slice(1); //获取#后面的路径
        this.setState( (perProps, perState) => {
            return {
                ...perState,
                location: {
                  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值