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

【react组件】矩形框选小组件,鼠标左键选中 div,键盘 ESC 清空

在线预览
GitHub
在这里插入图片描述

demo

import React, { useState } from 'react';
import Chooser from 'rc-chooser';const containerStyle: React.CSSProperties = {display: 'flex',alignItems: 'center',justifyContent: 'center',flexWrap: 'wrap',
};const boxStyle: React.CSSProperties = {width: 40,height: 40,border: '1px solid red',margin: 2,
};const Child = React.memo(({ selected }: { selected: string[] }) => {return (<div className="child" style={containerStyle}>{Array.from({ length: 100 }).map((_, index) => {const isSelected = selected.includes(`${index}`);return (<divkey={index}style={{...boxStyle,backgroundColor: isSelected ? 'blue' : 'white',}}data-id={index}>Div {index + 1}</div>);})}</div>);
});export default () => {const [selected, setSelected] = useState<string[]>([]);const observeHandle = (data: string[]) => {setSelected(data);};return (<div style={{ margin: 20 }}><Chooser observeProp="data-id" observeHandle={observeHandle}><Child selected={selected} /></Chooser></div>);
};

相关文章:

  • Transformer编码器+SHAP分析,模型可解释创新表达!
  • 开源AI对比--dify、n8n
  • 云原生环境下服务治理体系的构建与落地实践
  • 【计算机视觉】OpenCV实战项目: Fire-Smoke-Dataset:基于OpenCV的早期火灾检测项目深度解析
  • 使用Python和OpenCV实现实时人脸检测与识别
  • 【软件测试】测试用例的概念与常见测试的模型
  • 电商平台如何做好DDoS 攻防战?
  • 【Java基础】——JVM
  • 如何获取NumPy数组中前N个最大值的索引
  • SSL证书格式详解:PEM、CER、DER、JKS、PKCS12等
  • 【C++设计模式之Template Method Pattern】
  • 蓝桥杯青少 图形化编程(Scratch)编程题每日一练——图形特效
  • [Windows] 能同时打开多个图片的图像游览器JWSEE v2.0
  • 【TACD模拟】质子辐照对GaN器件临界电压增加的影响机制
  • DIFY教程第七弹:自然语言生成SQL应用
  • 在 Spring Boot 中实现动态线程池的全面指南
  • OpenCV计算机视觉实战(4)——计算机视觉核心技术全解析
  • 全局异常未能正确捕获到对应的异常
  • Spring,SpringMVC,SpringBoot,SpringCloud的区别
  • mysql两张关联表批量更新一张表存在数据,而另一张表不存在数据的sql
  • 国办印发《关于进一步加强困境儿童福利保障工作的意见》
  • 保证断电、碰撞等事故中车门系统能够开启!隐藏式门把手将迎来强制性国家标准
  • 追光|铁皮房、土操场,这有一座“筑梦”摔跤馆
  • 上交现场配乐4K修复版《神女》:默片巅峰有了新的打开方式
  • 美联储宣布维持基准利率不变
  • 云南一男子酒后经常殴打七旬母亲,被警方拘14日罚600元