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

赣州人才网官方网站网站备案局

赣州人才网官方网站,网站备案局,微网站模板开发,聊天软件开发哪个好点分享原因 由于项目中需要使用拖曳组件(需求:全局#xff0c;跨组件#xff0c;跨数据)#xff0c;我选择了react-dnd 概念 React DnD 是一组 React 高阶组件#xff0c;我们在使用的时候只需要将目标元素进行包裹#xff0c;就可以实现目标元素具有拖动或接受拖动的功能。… 分享原因 由于项目中需要使用拖曳组件(需求:全局跨组件跨数据)我选择了react-dnd 概念 React DnD 是一组 React 高阶组件我们在使用的时候只需要将目标元素进行包裹就可以实现目标元素具有拖动或接受拖动的功能。它将整个拖动的事件完整的描述了出来这使得我们在使用的过程变得简单易用和扩展上有了无限的可能在处理复杂拖曳和丰富需求的时候强烈建议使用它。 官网 https://react-dnd.github.io/react-dnd/ 基本 Item type跟redux或其他组件一样item用来描述拖动dom的数据对象type用来标识一组可拖动和接收Backend用来表现dom拖动现象我使用了HTML5BackendMonitors用来查询当前拖动状态(数据dom位置等)强大的收集功能Connectors用于Backend和组件状态之间的连接hookuseDrag 将组件作为可拖动的来源注册到dnd useDrop 将组件作为可接收拖动来源注册到dnd 使用方法 导入 npm install react-dnd react-dnd-html5-backend 初始化 import { HTML5Backend } from react-dnd-html5-backend;DndProvider backend{HTML5Backend}..../组件参数type.ts export type DragProps {name: string; //名称标记type: string; //暂用于标记拖拽类型,接收者和发送者一致role: string; //data: any; //绑定的数据用于拖曳后操作数据content: JSX.Element; //绑定的元素onDragFinished: Function; //拖动结束回调. };export type AcceptorProps {name: string; //名称标记type: string; //暂用于标记拖拽类型,接收者和发送者一致role: string; //data: any; //绑定的数据用于拖曳后操作数据content: JSX.Element; //绑定的元素styleType: background | border;// customStyle:{// canDrop:string,// isActive:string// }onHover: Function; //移入区域. };组件MyDrag.ts import { useDrag, useDrop } from react-dnd; import { DragProps, AcceptorProps } from ./type; export const Dragger function Dragger(option: DragProps) {const { name, data, type, onDragFinished } option;const [{ isDragging }, drag] useDrag(() ({type: type,item: { name: name, data: data },end: (item, monitor, ...arg) {console.log(arg);const dropResult monitor.getDropResult();if (item dropResult) {console.log(source:, item);console.log(target:, dropResult);}if (onDragFinished) {onDragFinished(item, dropResult);}},collect: (monitor) ({isDragging: monitor.isDragging(),handlerId: monitor.getHandlerId(),}),}));const opacity isDragging ? 0.4 : 1;return (divref{drag}role{option.role}style{{ opacity }}data-id{${option.name}}{option.content}/div); }; export const Acceptor (option: AcceptorProps) {const { name, data, type, styleType, onHover } option;const [{ canDrop, isOver }, drop] useDrop(() ({accept: type,drop: () option,hover: () {if (onHover) {onHover();}},collect: (monitor) ({isOver: monitor.isOver(),canDrop: monitor.canDrop(),}),}));const isActive canDrop isOver;let backgroundColor #222;let borderBottom 0px solid rgba(31, 92, 206, 0);if (isActive) {backgroundColor rgba(64, 224, 208, 0.3);borderBottom 1px solid #26BD11;} else if (canDrop) {backgroundColor rgba(100, 149, 277, 0.3);borderBottom 1px solid #2063AF;}return (divref{drop}role{Acceptor}style{styleType background? { backgroundColor }: { borderBottom }}{option.content}/div); }; //同一list之间拖动 export const dragList (list: Arrayany,crtIndex: number,willIndex: number, ) {let targetItem list[crtIndex];let delIndex crtIndex willIndex ? crtIndex : crtIndex 1;list.splice(willIndex, 0, targetItem);list.splice(delIndex, 1);return list; }; //来自不同list之间拖动1.删除原来 2不删除原来 export const dragToList (list: Arrayany,targetList: Arrayany,crtIndex: number,willIndex: number,del: 1 | 2, ) {let targetItem list[crtIndex];targetList.splice(willIndex, 0, targetItem);if (del 1) {list.splice(crtIndex, 1);}return { list, targetList }; };具体使用 import { Dragger, Acceptor, dragList } from /components/Drag; //同列表之间拖曳handleDrag(crt: number, target: number) {conslog.log(dragList(newPanels, crt, target);)}renderDrag(item: ItemProps, children) {Acceptorkey{item.type}name{item.title}data{item}typexxxrolexxxAcceptonHover{() {}}content{Draggername{item.title}data{item}typexxxrolexxxDragcontent{children}onDragFinished{(source: any, target: any) {console.log(source, target, 回调);if (target) {this.handleDrag(source.data.sort,target.data.sort,);}}}/}styleTypeborder/}© 著作权归作者所有,转载或内容合作请联系作者 喜欢的朋友记得点赞、收藏、关注哦
http://www.w-s-a.com/news/416140/

相关文章:

  • 做哪种网站赚钱苏州住房城乡建设部网站
  • 镇江做网站学编程学哪一种比较好
  • 华美天一建筑公司网站赚钱做任务的网站有哪些
  • asp网站打开速度慢家乡网页设计教程
  • 网站 设计 深圳书店网站的建设
  • 北京网络营销推广培训哪家好南宁软件优化网站建设
  • flash网站引导页仓库管理系统源码
  • 济南网站制作公司排名营销型网站管理系统
  • 公司网站设计要多少钱用什么做网站的访问量统计
  • 湖北省住房和城乡建设厅门户网站沈阳网络平台推广公司
  • 河南平台网站建设公司网站如何提高转化率
  • 网站及推广wordpress 分享主题
  • 房产网站有哪些如何自己建一个微网站
  • 青岛市黄岛区城市建设局网站手机域名访问网站怎么进入
  • 网站模板 双语河南省建设人才信息网官网
  • 网站建设备案优化之看邹城网站开发
  • 网站方案书图书馆网站建设公司
  • 公司取名网免费版在线网站优化公司
  • dw怎么做秋季运动会网站九江集团网站建设
  • 响应式网站建设服务商wordpress 非小工具形式 微博秀
  • 网站安全检测漏洞扫描风险等级分布建设一个网站步骤
  • 摄影网站的意义开发企业小程序公司
  • 龙岩网站设计招聘信息网上免费logo设计
  • 高端定制网站开发建站教程详解网站共享备案可以申请支付接口
  • 做房产网站接不到电话企业推广宣传方式
  • 网站建设费用不用摊销下一页p30
  • 北京 工业网站建设公司国外服务器公司有哪些
  • 怎样局域网站建设盈利网站
  • 公司做网站广告语济南建网站价格消费品展
  • 建德网站网站建设规划设计书