React管理系统整合Cesium避坑指南

news2024/10/1 19:21:08

花费了一周时间将React 升级到了最新版本18,同时整合Cesium三维模块到系统中,其中遇到了react 版本升级后模块删改,按照原来的引入方式无法使用的问题,以及Cesium 放入子路由一直404等问题

文章目录

    • 一、系统版本依赖
    • 二、系统预览
    • 三、问题搜集
      • 1、首先是Switch,Redirect
      • 2、hashHistory
      • 3、dom 挂载
      • 4、子页面嵌入
      • 5、子页面加载Cesium

一、系统版本依赖

  • react@18.3.1
  • redux@5.0.1
  • react-router-dom@6.25.1
  • webpack@5.64.4
  • cesium@1.119.0
  • three@0.167.0
  • cesium_dev_kit@1.0.91

二、系统预览

  • 登录
    登录

  • 功能介绍
    系统预览

哔哩哔哩视频介绍 https://b23.tv/IijwU4f

三、问题搜集

1、首先是Switch,Redirect

最后开始 记得路由模块是 react-router,后期改成了react-router-dom

然鹅老版本配置是这样玩的:

import {
  BrowserRouter as Router,
  Route,
  Redirect,
  Link,
  Switch,
} from 'react-router-dom'
	<Router>
        <Switch>
          <Route path="/login" component={Login}></Route>
          <Route path="/" render={(props) => layout}></Route>
          <Redirect exact from="/user" to="/user/index"></Redirect>
        </Switch>
      </Router>

而新版本RedirectSwitch 已从react-router-dom 移除,取而代之的是 RoutersNavigate

需要将其改成

import {
  BrowserRouter as Router,
  Route,
  Navigate,
  Link,
  Routers,
} from 'react-router-dom'
	<Router>
        <Routers>
          <Route path="/login" element={Login}></Route>
          <Route path="/" render={(props) => layout}></Route>
          <Navigate index element={<Navigate to="/user/index" replace />
        </Routers>
      </Router>

不知道大家注意到没有,上面路由配置还有一个改动就是component 改成了element

2、hashHistory

这个原本也是在router里面的

import {Router, Route, hashHistory} from 'react-router-dom';
 <Router history={hashHistory}></Router>

新版本移除了hashHistory , 需要额外安装 history 模块

npm install --save-dev history

然后创建history

import { createHashHistory } from 'history';
const hashHistory = createHashHistory();

再是路由注入

<Router location={hashHistory.location} navigator={hashHistory}></Router>

3、dom 挂载

原来是直接 render

import ReactDom from 'react-dom'

ReactDOM.render(routes, document.getElementById('root'));

现在改到了client 模块里面,并且需要createRoot先构建

import ReactDOM from 'react-dom/client';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(routes);

4、子页面嵌入

原本使用的是props.children
如:

<div className="ant-layout-container">
       {this.props.children} 
 </div>

而现在需要使用Outlet来实现子页面的嵌入

import {Outlet} from "react-router-dom"

<div className="ant-layout-container">
   <Outlet/>
 </div>

5、子页面加载Cesium

最后一个是用子页面去加载Cesium 三维的模块,一直提示404

异常截图

就这样,当初我一直认为是路由哪里配置的不对,就一直捣鼓路由配置

接连两天都没解决这个问题,后来直接在App.jsx里面加载Cesium 模块没问题

就这样才慢慢发现其实这个404 不是路由问题,而是子页面里面的http 获取失败!

于是增加了setupProxy.js进行代理才得以解决404的问题

module.exports = function (app) {
  app.use( '/reactCesium/tools/draw',
    createProxyMiddleware({
      target:originUrl,
      changeOrigin: true,
      pathRewrite: {
        '^/reactCesium/tools/draw': '', // 重写路径
      },
    })
  );
}

嗯嗯记得的大概就这些吧,从这次升级的总体感受来说,反正本人觉得react 项目每升级一次都会让人铭记于心的

不知道大家感觉如何?如有其他关于版本差异的可以留言评论,后期我把他加文字便于其它小伙伴避坑

最后呈上项目原地址

功能在线预览 https://benpaodehenji.com/reactCesium/
github https://github.com/dengxiaoning/react-cesium

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1979522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.10.全卷积网络FCN

全连接卷积神经网络&#xff08;FCN&#xff09; ​ FCN是用来深度网络来做语义分割的奠基性工作&#xff0c;用转置卷积层来替换CNN最后的全连接层&#xff0c;从而可以实现对每个像素的预测 ​ CNN(卷积神经网络)可以认为是一个预训练好的模型。CNN的最后一层是全局平均池化…

【C++学习第19天】最小生成树(对应无向图)

一、最小生成树 二、代码 1、Prim算法 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 510, INF 0x3f3f3f3f;int n, m; int g[N][N]; int dist[N]; bool st[N];int prim() {memset(dist, 0x3f, sizeof di…

十大机器学习算法-学习笔记-章节1-线性回归—

一、前言 学习视频&#xff1a;第一章&#xff1a;线性回归原理推导 1-回归问题概述_哔哩哔哩_bilibili 相关资料 该内容仅作为个人笔记使用&#xff0c;希望看到的各位能有所获&#xff0c;博主有误的地方&#xff0c;各位可以在评论区有所指正 二、正文 1、线性回归 什…

CTF-web基础 web服务器

web服务器作用 web服务器是一个服务器软件&#xff0c;我们可以把静态网页部署到web服务器上&#xff0c;web‘服务器通常只能运行静态网页。 应用服务器可以运行动态网页&#xff0c;web服务器通常和应用服务器一起使用。 原理 当我们输入网页时&#xff0c;他会发送请求到…

2024小学生古诗文大会暑期备考:吃透历年真题和知识点(持续)

最近有一些家长朋友问好真题网&#xff0c;上海三年级以上的小学生有什么比较有价值的比赛可以参加&#xff1f;结合众多孩子的反馈和参与情况&#xff0c;好真题网体检参加上海市汉字小达人比赛活动、上海市小学生古诗文大会、AMC8美国数学竞赛等&#xff0c;主要针对的是语文…

使用Python创建多功能文件管理器

简介 在本文中&#xff0c;我们将探索一个使用Python的wxPython库开发的文件管理器应用程序。这个应用程序不仅能够浏览和选择文件&#xff0c;还支持文件预览、压缩、图片转换以及生成PPT演示文稿的功能。 C:\pythoncode\new\filemanager.py 完整代码 import wx import os …

ChatGLM3Loader发生错误Library cudart is not initialized

ChatGLM3Loader执行时发生错误&#xff1a; Library cudart is not initialized。 文章《Chatglm3部署踩坑记录》里提到是因为没有安装 CUDA Toolkit 引起。 1、用 nvidia-smi.exe 命令查看显卡当前驱动程序版本 2、NVIDIA CUDA 工具包发行说明&#xff0c;每个 CUDA 工具包版…

深度学习中常用的激活函数和损失函数

ReLu和Sigmoid的区别。 ReLU在正数区域提供线性响应&#xff0c;有助于加速训练并减少梯度消失问题&#xff0c;而Sigmoid在所有区域都是非线性的&#xff0c;输出范围是0到1&#xff0c;适用于二分类问题&#xff0c;但在深网络中容易造成梯度消失。 Softmax函数的作用。 Soft…

《Advanced RAG》-03-使用 RAGAs + LlamaIndex 进行 RAG 评估

摘要 文章首先介绍了 RAG 评估的三个主要部分&#xff1a;输入查询、检索上下文和 LLM 生成的响应。 提到了 RAGAs 提出的 RAG 评估指标&#xff0c;包括 Faithfulness、Answer Relevance 和 Context Relevance&#xff0c;以及 RAGAs 网站提供的两个额外指标&#xff1a;Conte…

Jenkins未授权访问漏洞 *

漏洞复现 步骤一&#xff1a;使用以下fofa语法进行产品搜索.... port"8080" && app"JENKINS" && title"Dashboard [Jenkins]" 步骤二&#xff1a;在打开的URL中...点击Manage Jenkins --> Scritp Console在执行以下命令..…

JS使用 navigator.clipboard 操作剪切板

注意&#xff1a;需要在安全域下才能够使用&#xff0c;比如&#xff1a;https 协议的地址、127.0.0.1、localhost safari浏览器需要打开配置&#xff0c;在地址栏输入 about:config&#xff0c;搜索 clipboard&#xff0c;将 asyncClipboard 由 false 改为 true&#xff0c;然…

8.3,8.4总结

1.改进渲染 // 加载头像图像InputStream inputStream new ByteArrayInputStream(message.getFileBytes());Image image new Image(inputStream); // 第二个参数表示是否缓存图片&#xff0c;根据需要设置imageView.setImage(image);// 设置头像视图大小imageView.setFitWidth…

安装eclipse时候 打开eclipse出现一连串英文

问题描述&#xff1a;打开eclipse失败&#xff0c;提示错误Version 1.8.xx of the JVM is not suitable for this product Version:11 or greater is required 本地已经有1.8.XX 的jdk&#xff0c;但因为新安装的eclipse需要JVM更高的版本。 原因&#xff1a;jdk版本太低 解…

基于随机森林、XGBoost、lightGBM的大气污染预测可视化系统【前后端交互】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主数据介绍系统界面展示系统登陆展示系统主界面可视化展示机器学习模型预测展示框架界面功能每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 数据介绍…

【C语言】C语言期末突击/考研--结构体与C++引用

一、结构体--结构体对齐--结构体数组 1.1.结构体的定义、初始化、结构体数组 有时候需要将不同类型的数据组合为一一个整体&#xff0c;以便于引用。 例如&#xff0c;一名学生有学号、姓 名、性别、年龄、地址等属性&#xff0c;如果针对学生的学号、姓名、年龄等都单独定义一…

代码坏味道有24种?我看未必

微信公众号&#xff1a;牛奶 Yoka 的小屋 有任何问题。欢迎来撩~ 最近更新&#xff1a;2024/08/03 [大家好&#xff0c;我是牛奶。] 我在上一篇文章打开IDEA&#xff0c;程序员思考的永远只有两件事&#xff01;中&#xff0c;通过代码命名、重复代码、合格方法三个章节&#…

PXE实验

实验前准备 关闭VMware的dhcp 点击 编辑 点击 虚拟网络编辑器 选择 NAT模式 将dhcp取消勾选 准备两台虚拟机 一台试验机&#xff0c;&#xff08;网络环境正常并且有图形化的界面的rhel7&#xff09; 一台测试机 init 5 --------------> 开启图形化界面 如…

《C/C++实战进阶》介绍

&#x1f680; 前言 本文是《C/C实战进阶》专栏的说明贴&#xff08;点击链接&#xff0c;跳转到专栏主页&#xff0c;欢迎订阅&#xff0c;持续更新…&#xff09;。 专栏介绍&#xff1a;以多年的开发实战为基础&#xff0c;总结并讲解一些的C/C基础与项目实战进阶内容&…

AI用Alice_split_toolset切割音频的采样率

AI用Alice_split_toolset切割音频的采样率 目录 AI用Alice_split_toolset切割音频的采样率 一、Sample rate采样率的概念 二、Alice_split_toolset切割音频的参数 2.1、字符串参数--input_folder输入文件夹路径 2.2、字符串参数--output_folder输出文件夹路径 2.3、字符串…

第一次作业,sql注入总结

sqli-labs靶场中演示&#xff1a; less1&#xff1a; 注入点为&#xff1a; $sql"SELECT * FROM users WHERE id$id LIMIT 0,1"; get输入一个id&#xff0c;可以逃逸出单引号来实现sql注入。 正常的输入为&#xff0c;输出数据库中查询的内容。 http://127.0.0…