核心库版本选择如下:React:18.3.1typescript: 4.9.5@atlaskit/pragmatic-drag-and-drop: 1.1.7更详细的依赖放在了文章末尾2.2 目标介绍可能由于版本和配置原因 官方给出的API就是@atlaskit/pragmatic-drag-and-drop/element/adapter下的draggable。 useRef, useState } from "react";import invariant from "tiny-invariant";import { draggable } from '@atlaskit /analytics-next": "^9.3.0", "@atlaskit/css-reset": "^6.9.0", "@atlaskit/pragmatic-drag-and-drop ": "^1.1.7", "@atlaskit/pragmatic-drag-and-drop-docs": "^1.0.10", "@emotion/react": "^11.11.4",
在实现中,Avatar使用了另一个组件Tooltip来完成这个功能:import Tooltip from "@atlaskit/tooltip"; const Avatar = (props) => 也就是说,Avatar通过更加可组合的方式,将Tooltip从依赖中删除,最终的代码就变成了: import Avatar from "@atlaskit/avatar"; import Tooltip 如果需要,上面的代码还可以修改为: import Avatar from "@atlaskit/avatar"; import Tooltip from "@material-ui/core/Tooltip 也就是说,我们无法简单的将其重构为: import InlineDialog from "@atlaskit/inline-dialog"; const MyEdit = () => { return 比如在Avatar中使用@atlaskit/tooltip,那么最终的消费者就不能使用其他的Tooltip组件,而Inl<wbr>ineEdit使用了@atlaskit/inline-<wbr>dialog
安装pragmatic-drag-and-drop库: # 安装包 yarn add @atlaskit/pragmatic-drag-and-drop 核心包包含适配器,监视器以及常用工具库等,下面分别一一介绍 /element/adapter'; import { dropTargetForTextSelection, monitorForTextSelection, } from '@atlaskit /pragmatic-drag-and-drop/text-selection/adapter'; 2.监视器 用于监听@atlaskit/pragmatic-drag-and-drop拖动事件的方法, 示例代码如下: import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter'; const 'an element started dragging'), }); 3.常用工具库 一些常见的小辅助函数,一般包含在主拖放包中,示例代码如下: import { combine } from '@atlaskit
其他在 React 中构建的组件库的主要案例包括Atlassian 的 Atlaskit 【http://atlaskit.atlassian.com/packages】 和 Shopify 的 Polaris
Bit - 用于跨应用程序管理和使用React和其他Web组件的虚拟存储库 AtlasKit - Atlassian的React UI库 ReactiveSearch - Elasticsearch的UI