当前位置: 首页 > article >正文

React框架----路由管理

文章目录

  • SPA
  • 路由
    • 路由基本使用
    • 路由组件与一般组件
    • NavLink

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: "我的组件"}

在这里插入图片描述


http://www.kler.cn/a/14090.html

相关文章:

  • ETCD(五)写请求执行过程
  • 通话蓝牙耳机什么牌子好?通话效果好的无线蓝牙耳机
  • leetcode 696. 计数二进制子串
  • Http常用面试知识总结
  • 打印完全数
  • Verilog阻塞与非阻塞赋值详解
  • 春秋云镜:CVE-2022-25488(SQL报错注入)
  • 【Java】关于物理存储方式有几种方式的一些讨论
  • 【hello Linux】进程程序替换
  • 两大消息爆出,币圈正在响应全球“去美元化”行动
  • python算法中的深度学习算法之前馈神经网络(详解)
  • 制造型企业为何需要MES管理系统,企业怎样选择合适的MES
  • Linux_红帽8学习笔记分享_7(Crontab计划任务+NTP时间同步服务器)
  • 【Python】matplotlib设置图片边缘距离和plt.lengend图例放在图像的外侧
  • 一级结构规范 合集
  • 【分布式搜索引擎02】
  • 【设计模式】23种设计模式之结构型模式
  • Hi3861 硬件 i2c 驱动 oled
  • MCAL知识点(二十二):LIN MCAL驱动配置详解
  • 2023年工商管理在职研究生择校、择专业指南