React Admin 前端脚手架之ant-design-pro

news2025/5/23 14:35:39

文章目录

    • 一、React Admin 前端脚手架选型
    • 二、React Admin 前端脚手架之ant-design-pro
    • 三、ant-design-pro使用步骤
    • 四、常用总结(持续更新)
      • EditableProTable组件 常用组件
        • EditableProTable组件 编辑某行后,保存时候触发发送请求
        • EditableProTable组件,添加记录提醒:只能同时编辑一行
        • EditableProTable组件 后台请求数据
        • ProForm组件
      • 在ProTable表格 Columns中自定义Copy的内容
      • ProForm 高级表单 去掉重置和提交按钮
    • 五、过程中问题总结
      • 报错:opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ]
    • 参考

一、React Admin 前端脚手架选型

https://www.bilibili.com/video/BV1nD4y1t7qH/?spm_id_from=333.337.search-card.all.click&vd_source=e66b048d577502789e7de9b732345c73

UI组件库对比和介绍:Ant.Design,Material UI,Semantic UI
参考URL: https://www.bilibili.com/video/BV1484y197CZ/

二、React Admin 前端脚手架之ant-design-pro

官方github:https://github.com/ant-design/ant-design-pro
预览:http://preview.pro.ant.design
首页:http://pro.ant.design/index-cn
使用文档:http://pro.ant.design/docs/getting-started-cn
更新日志: http://pro.ant.design/docs/changelog-cn
常见问题:http://pro.ant.design/docs/faq-cn
国内镜像:http://ant-design-pro.gitee.io

开箱即用的中台前端/设计React企业开发解决方案。

ant-design-pro蚂蚁官方出品(2023 蚂蚁集团体验技术部出品),介绍:
ant-design-pro https://www.osrc.com/tomsun28/projects/project_848612420101120000

Ant Design Pro 是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案,致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提升企业级中后台产品设计研发过程中的『用户』和『设计者』的体验。随着『设计者』的不断反馈,我们将持续迭代,逐步沉淀和总结出更多设计模式和相应的代码实现,阐述中后台产品模板/组件/业务场景的最佳实践,也十分期待你的参与和共建。

Ant Design Pro 作为一个前端脚手架,默认读者已经懂了一些前端的基础知识,并且了解 umi 和 Ant Design, 如果你是纯粹的新手,第一次来跑项目建议读一下 新手需知。

三、ant-design-pro使用步骤

官方文档:https://pro.ant.design/zh-CN/docs/getting-started
https://www.bilibili.com/video/BV1Ke4y177mf/
https://www.bilibili.com/video/BV1mr4y1r7GV/

包管理器
推荐使用 tyarn 来进行包管理,可以极大地减少 install 的时间和失败的概率,并且完全兼容 npm。

如果喜欢使用 npm 而不是 yarn,可以使用 cnpm, 安装速度比 tyarn 更快,但是与 npm 不是完全兼容。

选择 umi 的版本, 这里我们选择 umi@3
? 🚀 要全量的还是一个简单的脚手架? (Use arrow keys)
❯ simple
complete

这里我们选择 simple

启动项目
Ant Design Pro 以 umi 作为脚手架,启动和开发与 umi 基本相同。

启动项目
在项目根目录下执行 npm run start, 即可启动项目。

构建
由于 Ant Design Pro 使用的工具 Umi 已经将复杂的流程封装完毕,构建打包文件只需要一个命令 umi build,构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 .js、.css、index.html 等静态文件。

四、常用总结(持续更新)

EditableProTable组件 常用组件

建议在充分理解了ProTable之后,再使用EditableProTable会比较顺畅

EditableProTable组件 编辑某行后,保存时候触发发送请求

在这里插入图片描述
按ctrl 进入onSave源码定义:

onSave?: (
/** 行 id,一般是唯一id */
key: RecordKey, 
/** 当前修改的行的值,只有 form 在内的会被设置 */
record: DataType & {
    index?: number;
}, 
/** 原始值,可以用于判断是否修改 */
originRow: DataType & {
    index?: number;
}, 
/** 新建一行的配置,一般无用 */
newLineConfig?: NewLineConfig<DataType>) => Promise<any | void>;

因此,我们定义一个onSave处理函数,handleSave 如下,实现思路就是按照官方函数签名实现即可:

  const handleSave =async ( key: RecordKey,
    record: API.UploadTokenItem,
    originRow: API.UploadTokenItem, ) => {

      try {
        // 在这里编写保存数据的逻辑,可以发送请求将数据保存到后台
        console.log('要保存的行数据:', record);
        console.log('原始行数据:', originRow);
        console.log('要更新的行的 key:', key);
    
        // 这里发送请求将数据保存到后台
        // await saveUploadHistoryLog(record);
    
        // 这里返回保存成功后的提示信息,可以根据需要进行修改
        return '保存成功';
      } catch (error) {
        // 这里处理保存失败的情况
        console.error('保存失败:', error);
        throw new Error('保存失败');
      }
  }

然后配置,onSave使用 handleSave 处理即可。

在这里插入图片描述

EditableProTable组件,添加记录提醒:只能同时编辑一行

虽然我设置的

editable={{
  type: 'single',

同时,只能编辑一行,但是我现在已经没有了编辑(已经编辑过了),还是提醒只能同时编辑一行。

解决思路:
针对以上出现的情况我们只需要把 EditableProTable 组件中的 setEditableRowKeys(可编辑的key)给清空就可以了. setEditableRowKeys([]);

EditableProTable组件 后台请求数据

同ProTable组件,使用 request 配置项:

在这里插入图片描述

ProForm组件

在这里插入图片描述

  const formRef = useRef<ProFormInstance<any>>();   


<ProForm<{
  table: API.UploadTokenItem[];
}>
  formRef={formRef}
  initialValues={{
    table: defaultData,
  }}
  validateTrigger="onBlur"
>

ProForm 是 Ant Design Pro 中的一个表单组件,它提供了一种简化和增强表单开发的方式。ProForm 可以帮助你快速构建复杂的表单页面,并提供了许多内置功能和组件,如字段校验、表单布局、数据初始化等。

在你提供的代码片段中, 组件被用来创建一个表单,并通过 formRef 引用来获取表单实例。该表单有一个名为 ‘table’ 的字段,其值的类型是 API.UploadTokenItem[]。

属性解释:

  • formRef={formRef}:通过 formRef 属性将表单实例保存到 formRef 变量中,以便后续对表单的操作。
  • initialValues:通过 initialValues 属性设置表单的初始值。在这里,‘table’ 字段的初始值被设置为 defaultData,可以根据需求进行设置。
  • validateTrigger=“onBlur”:通过 validateTrigger 属性设置表单校验的触发时机。在这里,校验会在字段失去焦点时触发,可以根据需求进行设置。
    通过使用 组件,你可以更便捷地定义表单结构、处理表单校验和提交等操作。它提供了丰富的可配置项和扩展点,可以满足不同场景下的表单需求。

如果你需要对多行数据进行批量编辑并统一提交,使用 组件可以更方便地管理和校验整个表单的数据。
当你在表单中每次编辑一行数据时,表单实例会自动保存该行数据的状态。这意味着你可以在任何时候通过表单实例获取整个表单的数据,包括每一行的数据。

我的思路:如果只是单独操作每行数据,而不需要整个表单的统一提交和校验,那么使用表单实例来获取数据可能就没有太大的用处了。可以直接操作每行数据的状态,而无需通过表单实例。

在ProTable表格 Columns中自定义Copy的内容

在ProTable Columns中copyable的属性设置为true时,会生成一个复制的图标,点击即可复制。

在这里插入图片描述

ProForm 高级表单 去掉重置和提交按钮

查看源码,是由 ProForm组件的 submitter 属性决定:

在这里插入图片描述

五、过程中问题总结

报错:opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error’ ]

在执行 npm run dev 命令时,如果 OpenSSL 配置不正确,就会出现 opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ] 的错误。

问题分析:
因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。故此以前的项目在升级 nodejs 版本后会报错。

这个错误通常是由于在 NODE_OPTIONS 环境变量中设置了 --openssl-legacy-provider 选项引起的。

SET NODE_OPTIONS=–openssl-legacy-provider,来告诉nodejs,别使用最新的SSL3.0,还是使用以前旧版本的。
–openssl-legacy-provider 选项是用来启用 OpenSSL 1.0.x 的兼容模式的。然而,在 Node.js 14.x 及以上版本中,这个选项已被禁止使用。因此,如果你在 NODE_OPTIONS 环境变量中设置了 --openssl-legacy-provider 选项,就会出现 opensslErrorStack 错误。

问题解决:
【推荐】方法1
修改package.json,在相关构建命令之前加入SET NODE_OPTIONS=–openssl-legacy-provider,如:

"start": "set NODE_OPTIONS=--openssl-legacy-provider && cross-env UMI_ENV=dev umi dev",

这种可以一劳永逸,以后直接通过npm执行scripts里面的命令即可。不管是项目迭代,还是团队开发,这种都比较有效。

方法2:
尝试卸载Node.js 17+版本并重新安装Node.js 16+版本,然后再重新启动

参考

脚手架搭建 - Ant Design Pro 快速入门
参考URL: https://www.bilibili.com/video/BV1fC4y1277B/
React企业开发解决方案AntDesignPro速学教程
参考URL: https://www.bilibili.com/video/BV1Af4y1j72g/
【强烈推荐】【B端设计精读】Ant Design 5.0 设计改版的分析
参考URL: https://www.bilibili.com/video/BV1rv4y1278v/

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

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

相关文章

Bayes贝叶斯识别Spam Email垃圾邮件

目录 介绍&#xff1a; 一、Gaussian Naive Bayes(连续型变量) 1.1数据处理 1.2建模 1.3cross_val_score函数评估 1.4classification_report函数评估 1.5classification_report函数和cross_val_score函数的区别 二、 Multinomial Naive Bayes&#xff08;离散型变量&…

软件工程专业毕业设计题目怎么选?

文章目录 0 简介1 如何选题2 最新软件工程毕设选题3 最后 0 简介 学长搜集分享最新的软件工程业专业毕设选题&#xff0c;难度适中&#xff0c;适合作为毕业设计&#xff0c;大家参考。 学长整理的题目标准&#xff1a; 相对容易工作量达标题目新颖 1 如何选题 最近非常多的…

[嵌入式C][入门篇] 快速掌握基础(9个语句)

开发环境&#xff1a; 网页版&#xff1a;跳转本地开发(Vscode)&#xff1a;跳转 文章目录 一、基础语法&#xff08;1&#xff09;if (如果)示例1: 普通使用 if示例2: 带否则 else示例3: 否则如果 else if &#xff08;2&#xff09;switch case (选择)规则示例1: &#xff0…

Arduino开发实例-EMG 肌肉信号传感器

EMG 肌肉信号传感器 文章目录 EMG 肌肉信号传感器1、EMG 肌肉信号传感器介绍2、硬件准备及接线3、代码实现1、EMG 肌肉信号传感器介绍 在医学研究中,测量肌肉的活动、收缩和扩张非常重要。 EMG 肌肉传感器测量肌肉活动并产生信号以显示扩张和收缩量。 因此,输出取决于所选肌…

k8s笔记1- 初步认识k8s

k8s简介&#xff1a; kubernetes&#xff0c;俗称k8是&#xff0c;用于自动部署&#xff0c;扩缩和管理容器化应用程序的开源系统&#xff0c;它将组成应用程序的容器&#xff0c;组合成逻辑单元&#xff0c;便于管理和服务发现。 k8s的作用 自动化上线和回滚、存储编排…

听GPT 讲Rust源代码--compiler(9)

File: rust/compiler/rustc_trait_selection/src/traits/select/mod.rs 在Rust源代码中&#xff0c;rust/compiler/rustc_trait_selection/src/traits/select/mod.rs文件的作用是实现Rust编译器的trait选择器。 首先&#xff0c;让我们逐个介绍这些struct的作用&#xff1a; Se…

Boost学习之深入理解asio库

Asio简介 Boost C 库 Asio&#xff0c;它是异步输入输出的核心。 名字本身就说明了一切&#xff1a;Asio 即异步输入/输出。该库可以让 C 异步地处理数据&#xff0c;且平台独立。 异步数据处理就是指&#xff0c;任务触发后不需要等待它们完成。 相反&#xff0c;Boost.Asio …

调用百度地图 API 的步骤详解

百度地图 Web 服务 API 为开发者提供 http/https 接口&#xff0c;即开发者通过 http/https 形式发起检索请求&#xff0c;获取返回 json 或 xml 格式的检索数据。用户可以基于此开发 JavaScript、C#、C、Java 等语言的地图应用。百度地图 API 在线地址为&#xff1a;baidumap.…

Gromacs make_ndx建组问题

1. 选择特定分子或原子&#xff1a; gmx make_ndx -f input.gro -o output.ndx这将打开交互式界面&#xff0c;您可以在其中选择要包含在索引文件中的分子和原子。按照提示进行操作&#xff0c;选择适当的分组。 2. 手动创建索引文件&#xff1a; 您还可以手动创建一个文本文件…

JavaWeb——后端之Mybatis

四、Mybatis 概念&#xff1a; Mybatis是一款持久层&#xff08;Dao层&#xff09;框架&#xff0c;用于简化JDBC&#xff08;Sun操作数据库的规范&#xff0c;较繁琐&#xff09;的开发 历史&#xff1a; Apache的一个开源项目iBatis&#xff0c;2010年由apache迁移到了goog…

常见位运算总结

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 前言 1.基础位运算 &运算 |运算 ^运算 >>运算 <<运算 ~运算 2.给一个数n&#xff0c;确定他的二进制表示中的第x位&#xff0c;是0还是1 3.将一个数n的二进制表示的第x位修改成1 4.将一个数…

QML 项目中使用 Qt Design Studio 生成的UI界面

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 今天来和大家聊一下 Qt Design Studio 这个软件。这个软件的主要功能是用来快速完成 UI 界面&#xff0c;就和 widget 中的 desig…

Redis学习笔记(1)——感谢尚硅谷官方文档

Redis学习笔记&#xff08;1&#xff09;——感谢尚硅谷官方文档 1. NoSQL1.1 NoSQL数据库概述1.2 各种NoSQL数据库 2. Redis数据库安装2.1 安装条件2.2 Widows下如何安装Redis?2.3 Linux下如何安装Redis? 3. Redis介绍3.1 Redis 简介3.2 Redis 优势3.3 Redis与其他key-value…

HttpClient库与代理IP在爬虫程序中的应用

目录 前言 一、HttpClient库的基本使用方法 二、代理IP的使用方法 三、代理IP池的使用方法 四、总结 前言 在编写爬虫程序时&#xff0c;我们经常会使用HttpClient库来发送HTTP请求&#xff0c;获取网页内容。然而&#xff0c;有些网站可能会对频繁的请求进行限制&#x…

python的课后练习总结3之条件语句

1,简单点&#xff0c;只有IF IF 后面加入条件然后冒号: 条件成立执行的代码1 条件成立执行的代码2 条件是否成立都执行的代码 身高 float(input(请输入你的身高(米):)) if 身高 > 1.3:print(f您的身高是{身高}米,请您买票) print(祝您旅途愉快) 2,IF 加个else if 条件:…

[论文分享]TimesURL:通用时间序列表示学习的自监督对比学习

论文题目&#xff1a;TimesURL: Self-supervised Contrastive Learning for Universal Time Series Representation Learning 论文地址&#xff1a;https://arxiv.org/abs/2312.15709 代码地址&#xff1a;暂无 摘要 学习适用于各种下游任务的通用时间序列表示具有挑战性&…

无人机低空视角:针对人群密集场景的检测、跟踪和计数技术

无人机低空视角&#xff1a;针对人群密集场景的检测、跟踪和计数技术 DroneCrowdPaper简介数据集ECCV2020挑战DroneCrowd&#xff08;完整版&#xff09; DroneCrowd Paper 无人机在人群中的检测、跟踪和计数&#xff1a;基准研究。 简介 本文提出了一种时空多尺度注意力网络…

数据结构与算法——第一次大作业【考点罗列//错题修正//题解】

目录 一、选择题 ——绪论—— 1.【单选题】——数据结构的研究方向 2.【单选题】 ——数据结构的研究问题 3.【单选题】——数据结构的基本术语及概念 4.【单选题】 ——数据结构与算法 5.【单选题】 ——时间复杂度计算 ——顺序表与链表—— 6.【单选题】——顺序表…

算法训练营Day36(贪心-重叠区间)

都算是 重叠区间 问题&#xff0c;大家可以好好感受一下。 都属于那种看起来好复杂&#xff0c;但一看贪心解法&#xff0c;惊呼&#xff1a;这么巧妙&#xff01; 还是属于那种&#xff0c;做过了也就会了&#xff0c;没做过就很难想出来。 不过大家把如下三题做了之后&#…

多通道病虫害分子检测仪-百科科普知识

在农业科技日新月异的今天&#xff0c;病虫害防治已经成为现代农业的重要一环。为了更精准、更快速地检测和防治病虫害&#xff0c;多通道病虫害分子检测仪应运而生&#xff0c;成为守护绿色家园的"黑科技"。 WX-XC1多通道病虫害分子检测仪是一款集成了分子生物学、…