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

【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>);
};
http://www.xdnf.cn/news/4880.html

相关文章:

  • 【Axios】解决Axios下载二进制文件返回空对象的问题
  • 高性能Python Web 框架--FastAPI 学习「基础 → 进阶 → 生产级」
  • [Linux网络_70] ARP协议 | RARP | DNS | ICMP协议
  • 无人机电池储存与操作指南
  • 垃圾分类宣教小程序源码介绍
  • Java——包装类
  • (三)毛子整洁架构(Infrastructure层/DapperHelper/乐观锁)
  • vue内写websocket实时订阅
  • 【分享】KK/BD/XL等六大不限速下载
  • Spring Boot中的拦截器!
  • [计算机科学#12]:高级编程语言基本元素,迅速上手编程
  • 制造单元智能化改造与集成技术平台成套实训设备
  • 数据分析怎么做?高效的数据分析方法有哪些?
  • VB.NET Line Input有办法让输入的字符不显示在控制台上吗
  • Flutter 3.29.3 花屏问题记录
  • IBM BAW(原BPM升级版)使用教程第六讲
  • 一、每日Github软件分享----QuickGo外链直达工具​
  • 力扣刷题(第二十一天)
  • 涨薪技术|0到1学会性能测试第56课- 堆与栈、GC回收机制
  • 如何使用测试软件 Jmeter
  • 检查当前 Docker 使用的 默认运行时(default runtime)方法
  • mysql主从同步
  • Docker组件详解:核心技术与架构分析
  • 三维底座+智能应用,重构城市治理未来
  • WorkManager与Kotlin后台任务调度指南
  • 牛客练习赛138-题解
  • leetcode 383. Ransom Note
  • 开源AI对比--dify、n8n
  • 记录一下学习kafka的使用以及思路
  • Windows远程访问Ubuntu的方法