React路由跳转及路由传参的几种方式

一、react模拟hash路由的实现

        原理:hash路由的原理是监听hashchange事件

import { useEffect, useState } from 'react'
function App() {
    let [curHash, setCurHash] = useState('')
    useEffect(() => {
        function onChange() {
            setCurHash(window.location.hash.slice(1))
        }
        onChange()
        window.addEventListener('hashchange', onChange)
        return () => {
            window.removeEventListener('hashchange', onChange)
        }
    }, [])
    return (<>
        <h1>react模拟hash路由的实现</h1>
        <ul>
            <li>
                <a href="#/home">首页</a>
            </li>
            <li>
                <a href="#/news">新闻页</a>
            </li>
            <li>
                <a href="#/seach">搜索页</a>
            </li>
        </ul>
        {renderList(curHash)}
    </>)
}
function renderList(curHash) {
    switch (curHash) {
        case '/home':
            return <Home />
        case '/news':
            return <News />
        case '/seach':
            return <Seach />
        default:
            return <NotFound />
    }
}
let Home = () => <> <h1>首页/home</h1> </>
let News = () => <><h1>新闻页/news </h1></>
let Seach = () => <><h1>首页/seach</h1></>
let NotFound= ()=><> <h1>404</h1></>
export default App
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值