React框架----路由管理

文章介绍了SPA(单页应用)的基本概念,重点讲解了React中的路由管理库react-router-dom的使用,包括Route组件的注册、Link的页面跳转功能以及如何使用NavLink为激活链接添加样式。同时,提到了将路由组件和一般组件进行分离的组织方式。
摘要由CSDN通过智能技术生成

SPA

  • single page application
  • 只有一个页面
  • 异步请求数据,局部更新页面
  • 本地局部切换页面(不会向服务端加载整个页面)

路由

  • 地址栏路径与组件的对应关系
  • 切换路径,则切换组件(即局部页面)
  • react-router-dom 路由管理
  • Route 注册路由
  • Link负责跳转
  • 所有的路由相关内容放入BrowserRouter 或者HashRouter(地址带有#)内部
  • Switch 包裹所有的Route,匹配到一个地址,则不再继续匹配,展示当前地址对应的组件。
  • Redirect
  • NavLink 可以增加激活样式

路由基本使用

  • 创建项目,并安装依赖
# 新版本不能全局安装
npx create-react-app myreact
# 安装依赖
npm install -D react-router-dom@5

# 若是typescript模板,则
npm install -D @types/react-router-dom
  • index.jsx 入口文件
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import {BrowserRouter} from 'react-router-dom';

const root = ReactDOM.createRoot(
  document.getElementById('root') as HTMLElement
);
root.render(
  <BrowserRouter> 
    <App />
  </BrowserRouter>
);
  • App.jsx 所有组件的父组件
import React from 'react';
import "./index.css"
import {Link, Route} from 'react-router-dom'
import A from './components/A';
import B from './components/B';

//函数组件
function App() {
  return (
    <div className="App">
      {/* Link负责跳转 react-router-dom@5 */}
      <Link to="/a">page a</Link>
      <Link to="/b">page b</Link>

      {/* Route负责注册路由 */}
      <Route path="/a" component={A}></Route>
      <Route path="/b" component={B}></Route>
    </div>
  );
}

export default App;

  • pages 路由组件
import React from "react";
import './index.css'

//类组件
class A extends React.Component{

    render(){
        return (
            <div id="a">
                page A
            </div>
        )
    }
}

export default A
  • 进入项目目录,启动项目npm start
    完成!

路由组件与一般组件

  • 路由组件给Route使用,一般组件开发者使用。
  • 在pages下放置路由组件,components下放置一般的组件;
  • 路由组件的props可以接收到路由器传递的参数history/location/match;
    一般组件的props取决于传递了什么。

NavLink

可以给激活的连接,增加一个样式类名。

{
	//点击 哪个连接 就给它加一个样式lauf
}
<NavLink activeClassName='lauf' to="/a">page a</NavLink>
<NavLink activeClassName="lauf" to="/b">page b</NavLink>

封装NavLink
双标签中的文本为this.props.children

<MyLink a=1 b=2 c="c">我的组件</MyLink>

// 组件对象的props
this.props-->{a:1, b:2, c:"c", children: "我的组件"}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

laufing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值