基于React封装Handsontable并兼容antd

背景

        其实Handsontable官方也提供了React的版本,但是官方的版本再编辑和渲染的时候并不能够很好的嵌入第三方的组件库。这就导致了,使用了Handsontable就没有办和普通的react项目一样轻松引用其他第三方组件。因此对其react的版本进行了二次的封装,使其可以轻松的兼容第三方组件库。

Demo

git:GitHub - JavonHuang/jv-react-handsontable

安装

npm i @javonhuang/rh-table

引用

import { RHTable } from "@javonhuang/rh-table";
import '@javonhuang/rh-table/style' 

数据渲染

const ScoreRenderer = (props:any) => {const { value } = props;const color = value > 60 ? '#2ECC40' : '#FF4136';return (<span style={{ color }}>我的分数:{value}</span>);
};{title:"分数",dataIndex: "score",readOnly: false,validator: (e) => { return new Promise((resolve) => {if (e >= 60) {resolve(true)} else { resolve(false)}})},renderCell: (e) => { return <ScoreRenderer {...e}></ScoreRenderer>},},

数据编辑

单选

多选、必填列

const CitySelect = (e:any) => {const [options, setOptions] = useState<Array<any>>([])useEffect(() => { setTimeout(() => {setOptions(countryList)}, 1000);}, [])const change = (res:any) => { e.change(res,true)}return <Select options={options} defaultValue={e.value} onChange={ change}></Select>
};const HobbySelect = (e: any) => {const defaultValue=e.valueconst [options, setOptions] = useState<Array<any>>([])useEffect(() => { setTimeout(() => {setOptions(hobbyList)}, 1000);}, [])const change = (res:any) => { e.change(res)}return <Select mode="multiple" options={options} defaultValue={defaultValue} onChange={ change}></Select>
};{title:"国家(单选)",dataIndex: "country",editorCell: (e) => { return <CitySelect {...e}></CitySelect>},renderCell: (e) => { return getlable(countryList,e.value)}},{title:"爱好(多选)",dataIndex: "hobby",width: 120,editorCell: (e) => { return <HobbySelect {...e}></HobbySelect>},required: true,validator: (e) => { return new Promise((resolve) => {if (e&&e.length==0) {resolve(false)} else { resolve(true)}})}

日期

时间范围

单选/开关

颜色选择器/评分

表单校验

数据获取

列隐藏

自定义条件筛选

列宽拖动

列位置拖动变换

列排序

复杂表头设计

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

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

相关文章

用自动LOD简化3D网格【Babylon.js】

LOD&#xff08;Level of Details&#xff09;是一个强大的工具&#xff0c;在 2.0 版本中被添加到 Babylon.js 中。 这个概念相当简单&#xff1a;当相机距网格一定距离时&#xff0c;减少显示的面部数量将提高性能&#xff0c;而用户不会注意到这种减少。 LOD要求开发人员在…

Django中间件路由映射自动加/斜杠问题原因及分析

输入 http://127.0.0.1:8000/main/index/ 输入 http://127.0.0.1:8000/main/index 路由定义情况 urlpatterns [path("index/", views.index) ]可以发现我在输入URL的index路由时&#xff0c;如果没有和Django定义的路由匹配规则一样的话&#xff0c;浏览器自…

Vim:强大的文本编辑器

文章目录 Vim&#xff1a;强大的文本编辑器Vim的模式命令模式常用操作光标移动文本编辑查找和替换 底行命令模式常用操作Vim的多窗口操作批量注释与去注释Vim插件推荐&#xff1a;vimforcpp结论 Vim&#xff1a;强大的文本编辑器 Vim&#xff0c;代表 Vi IMproved&#xff0c;…

如何确保软件通过SmartScreen验证,消除用户下载时的警告提示?

在当前的网络时代&#xff0c;各种软件应用程序深深渗透到人们的日常生活和工作中&#xff0c;许多企业选择自行开发应用程序以推进其业务发展。但在发布应用程序后&#xff0c;软件所有者经常会遇到一个挑战&#xff0c;即用户在下载时可能会遇到微软SmartScreen提示“此应用程…

探索HTTP协议的世界 | 从基础到高级应用,原理与实践相结合(请求篇)

从基础到高级应用&#xff0c;原理与实践相结合 什么是Http历代Http协议主要特点格式和URL协议内容请求行格式如下请求方法简单案例 消息报头报头域的格式HTTP消息报头类型普通报头优化方向报头&#xff08;缓存&#xff09;Cache-Control的选项其他相关的缓存报头 请求报头Acc…

Unity TMP Inputfield 输入框 框选 富文本 获取真实定位

一、带富文本标签的框选是什么 UGUI的InputField提供了selectionAnchorPosition和selectionFocusPosition&#xff0c;开始选择时的光标下标和当前光标下标 对于未添加富文本标签时&#xff0c;直接通过以上两个值&#xff0c;判断一下框选方向&#xff08;前向后/后向前&…

C#Winform使用扩展方法自定义富文本框(RichTextBox)字体颜色

实现效果 调用方法 rtxtLog.AppendTextColorful(richTextBox1,DateTime.Now.ToString(), Color.Red); 完整代码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Sys…

【U8+】用友固定资产卡片拆分提示:未设置对象变量或With block变量。

【问题描述】 用友U8软件中&#xff0c; 操作固定资产模块&#xff0c;针对资产进行卡片拆分的时候&#xff0c; 提示&#xff1a;未设置对象变量或With block变量。 确定后仍然能打开卡片拆分界面&#xff0c;但是界面显示异常看不到拆分明细信息&#xff0c;并且保存后拆分结…

C/C++ 关于 terminate called without an active exception(问题)

在 C/C 之中这类问题&#xff0c;主要出现在STL两个BCL基础类库使用上面&#xff0c;std::mutex、std::thread&#xff0c;它是指在析构时&#xff0c;某些行为没有被正确处理导致的。 对于 std::mutex&#xff0c;类为析构时&#xff0c;仍旧存在原子信号量标志没有释放&#…

【Qt-Qt Creator使用技巧】

工具-Qt Creator ■ 使用技巧■ 定义触发片段■ Qt Creator 行编辑■ 代码注释■ 代码补全■ 快速给函数添加定义■ 创建书签■ 同步列输入■ 局部替换■ 源代码阅读■ 源码调试■ 使用技巧 ■ 定义触发片段 ■ Qt Creator 行编辑 shift + alt + up / down来获得多个游标。 …

导入芯片原厂SDK Mirror源码到gerrit

下载镜像代码 repo init --mirror --repo-url ssh://xx/repo.git -u ssh://xx/manifests.git -m manifest.xml repo sync 创建AOSP project 对All Project权限修改 创建repo 在刚才下载的codebase根目录执行如下命令&#xff1a; repo forall -c echo $REPO_PROJECT; ssh -p 29…

DOTS Instancing合批:如何针对单个渲染实体修改材质参数

最近在做DOTS的教程,由于DOTS(版本1.0.16)目前不支持角色的骨骼动画&#xff0c;我们是将角色的所有动画数据Baker到一个纹理里面&#xff0c;通过修改材质中的参数AnimBegin,AnimEnd来决定动画播放的起点和终点&#xff0c;材质参数AnimTime记录当前过去的动画时间。但是在做大…

利用Python进行图像和XML标注数据的批量处理

在机器学习项目中,特别是涉及到图像识别和分类的领域,经常需要对大量数据进行预处理。这些数据预处理可能包括图像转换、格式化标签、数据集划分等。本文将介绍一个基于Python的脚本,该脚本能够自动化这些常见任务,并且还支持多进程处理以加速这些操作。 脚本核心功能 该脚…

CSS导读 (元素显示模式 下)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 3.6 元素显示模式转换 3.7 (一个小技巧)单行文字垂直居中的代码 3.8 单行文字垂直居中的原理 3.9 小案例…

leaflet知识点:地图窗格panes的应用

一&#xff0c;需求背景 地图中存在无人机&#xff0c;停机坪&#xff0c;航线三个图层&#xff0c;需要实现无人机图层显示在最上面&#xff0c;停机坪图层显示在最下面&#xff0c;航线图层显示在中间。 二&#xff0c;遇到问题 由下图可知航线图层所在overlayPane窗格的z-…

mac下docker搭建nginx+php+mysql,并实现nginx负载均衡

一 环境 系统&#xff1a;macOS Sonoma 14.3芯片&#xff1a;Apple M3 Prodocker 版本&#xff1a;25.0.5 二 软件 OrbStack [推荐&#xff0c;一款轻量化的docker管理软件&#xff0c;还是docker的命令]item2 三 步骤 拉取 nginx 镜像 docker pull nginx新建一个 nginx …

openjudge_2.5基本算法之搜索_1789:算24

题目 1789:算24 总时间限制: 3000ms 内存限制: 65536kB 描述 给出4个小于10个正整数&#xff0c;你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是&#xff0c;是否存在一种方式使得得到的表达式的结果等于24。 这里加减乘除以及括号的运算结…

工控 modbusTCP 报文

Tx 发送报文:00 C9 00 00 00 06 01 03 00 00 00 02 Rx 接收报文:00 C9 00 00 00 07 01 03 04 01 4D 00 01 Tx 发送报文:00 C9 00 00 00 06 01 03 00 00 00 02 00 C9 事务处理标识符 2字节 00 00 协议标识符 2字节 固定 00 00 00 06 长度 2字节 表示之后的字节总数 &#xff08;…

大数据之ClickHouse

大数据之ClickHouse 简介 ClickHouse是一种列式数据库管理系统&#xff0c;专门用于高性能数据分析和数据仓库应用。它是一个开源的数据库系统&#xff0c;最初由俄罗斯搜索引擎公司Yandex开发&#xff0c;用于满足大规模数据分析和报告的需求。 特点 开源的列式存储数据库…

elementUI 下拉框加提示文案

效果如下&#xff1a; 展示文案在最下面&#xff0c;跟选项有个分割线 <el-select v-model"value" placeholder"请选择" clearable popper-class"addNotice" class"addNoticeS" visible-change"(v) >selectNotice(v,展示…