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

从0学习React(10)

示例代码:

const columns: ProColumns<API.BasicInfoItem>[] = [{title: '设备编码',dataIndex: 'deviceCode',ellipsis: true,width: 40,},{title: '设备名称',dataIndex: 'deviceName',ellipsis: true,width: 50,},{title: '产线-工序',dataIndex: 'deviceClassifyName',ellipsis: true,search: false,width: 40,},{title: '规格',dataIndex: 'deviceSpecification',ellipsis: true,search: false,width: 30,},{title: '型号',dataIndex: 'deviceModel',ellipsis: true,search: false,width: 30,},{title: '设备等级',dataIndex: 'deviceType',ellipsis: true,width: 30,search: false,valueType: 'select',request: async () => {const { data } = await getBaseDefineOption('DEVICE_CLASS');return data || [];},},{title: '设备状态',dataIndex: 'state',ellipsis: true,width: 30,valueType: 'select',request: async () => {const { data } = await getBaseDefineOption('DEVICE_STATE');return data || [];},},{title: '操作',dataIndex: 'option',valueType: 'option',fixed: 'right',width: 30,render: (_, record) => [<Dropdownkey={record.id}menu={{items,onClick: (menu) => {switch (menu.key) {case 'edit':setCurrentRow(record);setType(2);openDetail();break;case 'view':setCurrentRow(record);setType(3);openDetail();break;case 'copy':handleModalVisible(true);setCurrentRow(record.id);break;case 'del':Modal.confirm({title: '确认',icon: <ExclamationCircleOutlined />,content: '确定删除设备信息吗?',okText: '确认',cancelText: '取消',onOk: () => {delBasicInfo(record.id).then((res) => {if (res.code === '00000') {message.success('已删除该设备信息!');// 刷新表格数据actionRef.current?.reload();}});},});break;}},}}><Button icon={<UnorderedListOutlined />} size="small" type="primary"><DownOutlined /></Button></Dropdown>,],},
];

这段代码定义了一个名为 columns 的数组,用于配置 ProTable 的列。每个列对象包含列的标题、数据索引、宽度、是否启用省略号、搜索配置、值类型等属性。最后一列是一个操作列,包含一个下拉菜单,用于执行编辑、查看、复制和删除操作。

使用的语法和概念

1. TypeScript 类型注释
  • ProColumns<API.BasicInfoItem>[] 指定了 columns 数组的类型。
  • ProColumns 是 ProTable 的列配置类型,API.BasicInfoItem 是数据项的类型。
const columns: ProColumns<API.BasicInfoItem>[] = [ ... ];
2. 列配置对象
  • 每个列配置对象包含多个属性,如 titledataIndexellipsiswidth 等。
{title: '设备编码',dataIndex: 'deviceCode',ellipsis: true,width: 40,
}
3. 异步请求数据
  • request 属性用于异步请求数据,返回一个 Promise 对象。
{title: '设备等级',dataIndex: 'deviceType',ellipsis: true,width: 30,search: false,valueType: 'select',request: async () => {const { data } = await getBaseDefineOption('DEVICE_CLASS');return data || [];},
}

看完这里,其实也还不算很懂,因为有些代码的意思我还没理解,于是我问AI,这段代码什么意思:

{title: '设备等级',dataIndex: 'deviceType',ellipsis: true,width: 30,search: false,valueType: 'select',request: async () => {const { data } = await getBaseDefineOption('DEVICE_CLASS');return data || [];},
}

代码解析

1. title: '设备等级'
  • title 属性指定了列的标题,显示为“设备等级”。
2. dataIndex: 'deviceType'
  • dataIndex 属性指定了列对应的数据字段,即 deviceType
3. ellipsis: true
  • ellipsis 属性指定了文本是否超出时显示省略号。
4. width: 30
  • width 属性指定了列的宽度,为 30。
5. search: false
  • search 属性指定了该列是否在表格的搜索表单中显示。设置为 false 表示不显示。
6. valueType: 'select'
  • valueType 属性指定了列的值类型为 select,即下拉选择框。
7. request: async () => { ... }
  • request 属性是一个异步函数,用于异步请求数据。
  • 在这个例子中,request 函数调用 getBaseDefineOption 函数,传入 'DEVICE_CLASS' 作为参数,来获取设备等级的选项数据。
request: async () => {const { data } = await getBaseDefineOption('DEVICE_CLASS');return data || [];
},

使用的语法和概念

1. 异步函数(Async Function)
  • async 关键字用于定义一个异步函数,使其返回一个 Promise 对象。
  • await 关键字用于等待一个 Promise 对象的解析。
request: async () => {const { data } = await getBaseDefineOption('DEVICE_CLASS');return data || [];
},
2. 解构赋值(Destructuring Assignment)
  • 解构赋值语法用于从对象中提取数据,并将其赋值给变量。
const { data } = await getBaseDefineOption('DEVICE_CLASS');
3. 默认值(Default Value)
  • 使用 || 运算符指定一个默认值,即如果 data 为 null 或 undefined,则返回一个空数组 []
return data || [];

相关文章:

从0学习React(10)

示例代码&#xff1a; const columns: ProColumns<API.BasicInfoItem>[] [{title: 设备编码,dataIndex: deviceCode,ellipsis: true,width: 40,},{title: 设备名称,dataIndex: deviceName,ellipsis: true,width: 50,},{title: 产线-工序,dataIndex: deviceClassifyName…...

Redis-结构化value对象的类型

文章目录 一、Redis的结构化value对象类型的介绍二、Redis的这些结构化value对象类型的通用操作查看指定key的数据类型查看所有的key判断指定key是否存在为已存在的key进行重命名为指定key设置存活时间pexpire与expire 查看指定Key的存活时间为指定key设置成永久存活 三、Redis…...

【QT】Qt对话框

个人主页~ Qt窗口属性~ Qt窗口 五、对话框2、Qt内置对话框&#xff08;1&#xff09;Message Box&#xff08;2&#xff09;QColorDialog&#xff08;3&#xff09;QFileDialog&#xff08;4&#xff09;QFontDialog&#xff08;5&#xff09;QInputDialog 五、对话框 2、Qt内…...

【计算机网络篇】数据链路层(14)虚拟局域网VLAN(概述,实现机制)

文章目录 &#x1f6f8;虚拟局域网VLAN&#x1f354;虚拟局域网VLAN的实现机制&#x1f95a;IEEE 802.1Q帧&#x1f95a;以太网交换机的接口类型&#x1f5d2;️例一&#xff1a;在一个交换机上不进行人为的VLAN划分&#xff0c;交换机各接口默认属于VLAN1且类型为Access的情况…...

伺服中的电子凸轮与追剪

一、机械凸轮 机械凸轮是一个具有曲线轮廓或凹槽的构件&#xff0c;它把运动特性传递给紧靠其边缘移动的推杆&#xff0c;推杆又带动机架做周期性运动。 凸轮的推杆位置跟随凸轮角度的周期性变化而变化&#xff0c;其运动特性与机械凸轮的外形相关&#xff0c;定义凸轮…...

Oracle 第22章:数据仓库与OLAP

第22章&#xff1a;数据仓库与OLAP 1. 数据仓库概念 数据仓库&#xff08;Data Warehouse, DW&#xff09; 是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合&#xff0c;用于支持管理决策。数据仓库中的数据通常来自不同的操作型系统或外部数据源&#xff0c;…...

在Ubuntu上安装TensorFlow与Keras

文章目录 1. 查看系统和Python版本信息1.1 查看Ubuntu版本信息1.2 查看Python版本信息 2. 安装pip2.1 下载get-pip.py2.2 运行get-pip.py2.3 查看pip版本 3. 安装Jupyter Notebook3.1 安装Jupyter Notebook3.2 运行Jupyter Notebook3.3 安装jupyter-core3.4 配置Jupyter Notebo…...

vue data变量之间相互赋值或进行数据联动

摘要&#xff1a; 使用vue时开发会用到data中是数据是相互驱动&#xff0c;经常会想到watch,computed&#xff0c;总结一下&#xff01; 直接赋值&#xff1a; 在 data 函数中定义的变量可以直接在方法中进行赋值。 export default {data() {return {a: 1,b: 2};},methods: {u…...

如何理解ref,toRef,和toRefs

1. ref ref 是 Vue 3 提供的一个用于创建响应式数据的 API。它可以用来创建简单的响应式变量&#xff0c;例如数字、字符串、布尔值或对象等。通过使用ref&#xff0c;当数据发生变化时&#xff0c;相关的组件视图会自动更新。 用法 创建响应式数据&#xff1a; import { ref …...

从单一到多元:揭秘 Hexo Diversity 主题的运行原理

揭秘 Hexo Diversity 主题的运行原理 一、 引言二、 Diversity 主题2.1 Hexo 控制台命令2.2 Hexo 核心 API2.3 运行原理2.3.1 多主题配置相关2.3.2 多主题执行指令 2.4 版本演进2.4.1 V1版本2.4.2 V2版本2.4.2.1 PC 端2.4.2.2 Phone 端 2.5 后续展望 三、 总结 一、 引言 众所…...

软考中级(系统集成项目管理工程师)案例分析计算题-笔记

案例分析计算题必拿分&#xff01;&#xff01; 1.成本进度管理 初中数学题&#xff0c;整了一堆缩写&#xff0c;容易给人绕晕 知道英文全称后就好理解了名词汇总&#xff1a; 英文缩写英文全称含义公式PVPlanned Value (计划值)按照计划到当前时间点需要花费的钱根据题目自…...

Docker打包自己项目推到Docker hub仓库(windows10)

一、启用Hyper-V和容器特性 1.应用和功能 2.点击程序和功能 3.启用或关闭Windows功能 4.开启Hyper-V 和 容器特性 记得重启生效&#xff01;&#xff01;&#xff01; 二、安装WSL2&#xff1a;写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/143057041 三…...

CesiumJS 案例 P20:监听鼠标滚轮、监听鼠标左键按下与松开、监听鼠标右键按下与松开、监听鼠标左击落点

CesiumJS CesiumJS 是一个开源的 JavaScript 库&#xff0c;它用于在网页中创建和控制 3D 地球仪&#xff08;地图&#xff09; CesiumJS 官网&#xff1a;https://www.cesium.com/ CesiumJS 下载地址&#xff1a;https://www.cesium.com/platform/cesiumjs/ CesiumJS API 文…...

如何使用Web-Check和cpolar实现安全的远程网站监测与管理

文章目录 前言1.关于Web-Check2.功能特点3.安装Docker4.创建并启动Web-Check容器5.本地访问测试6.公网远程访问本地Web-Check7.内网穿透工具安装8.创建远程连接公网地址9.使用固定公网地址远程访问 前言 本期给大家分享一个网站检测工具Web-Check&#xff0c;能帮你全面了解网…...

随机生成100组N个数并对比,C++,python,matlab,pair,std::piecewise_construct

随机生成100组N个数&#xff0c;数的范围是1到35&#xff0c;并检查是否包含目标数组的数字 python版本 import numpy as np def count_groups_containing_obj(N, obj):# 随机生成100组N个数&#xff0c;数的范围是1到35groups np.random.randint(1, 36, size(1000, N))#pri…...

python爬虫获取数据后的数据提取

文章目录 python爬虫中的数据提取1.Json格式数据的数据提取2.Html格式数据提取之bs4解析器如何使用快速使用对象的种类Tagname和attributes属性NavigableString(字符串)BeautifulSoupComment 子节点.contents.children.descendants 父节点.parent.parents 节点内容.string.stri…...

前段(vue)

目录 跨域是什么&#xff1f; SprinBoot跨域的三种解决方法 JavaScript 有 8 种数据类型&#xff0c; 金额的用什么类型。 前段 区别 JQuery使用$.ajax()实现异步请求 Vue 父子组件间的三种通信方式 Vue2 和 Vue3 存在多方面的区别。 跨域是什么&#xff1f; 跨域是指…...

pairwise算法之rank svm

众所周知&#xff0c;point-wise/pair-wise/list-wise是机器学习领域中重要的几种建模方法。比如&#xff0c;最常见的分类算法使用了point-wise&#xff0c;即一条样本对应一个label(0/1)&#xff0c;根据多条正负样本&#xff0c;使用交叉熵&#xff08;cross entropy&#x…...

SAP RFC 用户安全授权

一、SAP 通讯用户 对于RFC接口的用户&#xff0c;使用五种用户类型之一的“通讯”类型&#xff0c;这种类型的用户没有登陆SAPGUI的权限。 二、对调用的RFC授权 在通讯用户内部&#xff0c;权限对象&#xff1a;S_RFC中&#xff0c;限制进一步可以调用的RFC函数授权&#xff…...

记录新建wordpress站的实践踩坑:wordpress 上传源码新建站因权限问题导致无法访问、配置新站建站向导以及插件主题上传配置的解决办法

官方文档&#xff1a;How to install WordPress – Advanced Administration Handbook | Developer.WordPress.org 但是没写权限问题&#xff0c;可以下载到 wordpress官方包。 把下载的wordpresscn的包解压并上传到服务器目录下&#xff0c;但是因为是root上传导致了权限问题…...

CSS遮罩艺术:从基础阴影到高级毛玻璃特效实战

1. 从零开始理解CSS遮罩 遮罩效果在前端开发中就像给界面元素戴上了一层"面纱"。想象一下&#xff0c;当你需要突出某个弹窗内容时&#xff0c;背后的页面会变暗——这就是最常见的遮罩应用场景。我们先从最基础的实现方式说起。 基础遮罩的实现通常需要一个覆盖全…...

Wallpaper Engine下载器革新:突破创意工坊壁纸获取瓶颈的高效解决方案

Wallpaper Engine下载器革新&#xff1a;突破创意工坊壁纸获取瓶颈的高效解决方案 【免费下载链接】Wallpaper_Engine 一个便捷的创意工坊下载器 项目地址: https://gitcode.com/gh_mirrors/wa/Wallpaper_Engine 你是否曾因Steam创意工坊复杂的下载流程而放弃心仪的动态…...

Ostrakon-VL像素终端实战:用实时摄像头完成便利店突击巡检

Ostrakon-VL像素终端实战&#xff1a;用实时摄像头完成便利店突击巡检 1. 像素特工终端介绍 想象一下&#xff0c;你是一名便利店巡检员&#xff0c;每天需要检查几十家门店的商品陈列、价签准确性和店面整洁度。传统方法需要手动拍照记录、填写表格&#xff0c;既耗时又容易…...

WebGLStudio.js实时反射技术终极指南:环境映射与反射探针完全解析

WebGLStudio.js实时反射技术终极指南&#xff1a;环境映射与反射探针完全解析 【免费下载链接】webglstudio.js A full open source 3D graphics editor in the browser, with scene editor, coding pad, graph editor, virtual file system, and many features more. 项目地…...

英雄联盟身份定制完全指南:3步打造专属游戏形象

英雄联盟身份定制完全指南&#xff1a;3步打造专属游戏形象 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 想在英雄联盟中展示与众不同的游戏形象吗&#xff1f;LeaguePrank正是你寻找的解决方案&#xff01;这个开源工具通过…...

MySQL 故障排查与生产环境优化笔记

一、基础信息1. 实验环境数据库版本&#xff1a;MySQL 8.0架构&#xff1a;1 台单实例 2 台主从复制环境用途&#xff1a;模拟生产故障、验证优化方案2. MySQL 逻辑架构&#xff08;四层&#xff09;连接层处理客户端连接、授权认证、权限校验提供线程池、SSL 安全连接服务层S…...

别只盯着PID!用STM32的PWM差速控制,让你的循迹小车转弯更稳(附源码分析)

STM32 PWM差速控制&#xff1a;让循迹小车转弯更稳的实战技巧 循迹小车的核心挑战之一是如何实现平滑稳定的转弯控制。许多开发者习惯性地直接套用PID算法&#xff0c;却忽略了更基础的PWM差速控制策略。实际上&#xff0c;通过精心设计的PWM占空比调整方案&#xff0c;完全可以…...

假芯片识别与防范:工程师实战指南

1. 假芯片泛滥&#xff1a;半导体行业的隐秘危机最近在调试一块电路板时&#xff0c;我发现一个奇怪的现象&#xff1a;明明使用的是同型号的MCU&#xff0c;但部分板子的功耗异常偏高。经过一周的排查&#xff0c;最终发现问题出在芯片上——我们采购到了一批"套牌"…...

S-UI Windows版实战指南:从部署到精通的全方位解决方案

S-UI Windows版实战指南&#xff1a;从部署到精通的全方位解决方案 为什么选择S-UI&#xff1f;解决Windows代理管理的三大痛点 你是否也曾遇到这些问题&#xff1a;在Windows服务器上部署代理面板时&#xff0c;面对复杂的命令行操作望而却步&#xff1f;尝试多种工具后仍无法…...

新手福音:用快马平台理解openclaw架构图并生成你的第一个应用

新手福音&#xff1a;用快马平台理解openclaw架构图并生成你的第一个应用 作为一个刚入门的开发者&#xff0c;第一次看到openclaw架构图时&#xff0c;那些方框和箭头让我一头雾水。直到在InsCode(快马)平台上动手实践后&#xff0c;才发现原来架构图可以这么直观。下面分享我…...