使用 React
实现的美观且易于访问的列表拖放功能
<table>
重新排序 - 表格模式<Draggable />
的父级@atlaskit/tree
包支持树形布局<Droppable />
列表可以是滚动容器(没有可滚动的父级),也可以是滚动容器的子级(同样没有可滚动的父级)react-beautiful-dnd
旨在创建美观的列表拖放功能,任何人都可以使用,即使是无法看到列表的人也可以使用。为了更好地了解该项目的历史和动机,您可以查看以下外部资源:
有很多库允许在 React 中进行拖放交互。其中最引人注目的是令人惊叹的 react-dnd
。它出色地提供了一组出色的拖放原语,尤其适用于极不一致的 html5 拖放功能。react-beautiful-dnd
是专为列表(垂直、水平、列表间移动、嵌套列表等)构建的更高级别的抽象。在该功能子集内,react-beautiful-dnd
提供了强大、自然且美观的拖放体验。然而,它的功能不如 react-dnd
广泛。因此,根据您的用例,react-beautiful-dnd
可能不适合您。
react-beautiful-dnd
包# yarn
yarn add react-beautiful-dnd
# npm
npm install react-beautiful-dnd --save
import { DragDropContext } from 'react-beautiful-dnd';
React
环境为了使用 react-beautiful-dnd
,你可能需要设置一个 React
环境。
React
文档create-react-app
设置 React 环境 - 来自我们的 免费入门课程通用模块定义 包已发布在 npm
的 /dist
文件夹下,可供使用。我们发布以下文件:
dist/react-beautiful-dnd.js
dist/react-beautiful-dnd.min.js
(最小化包)这些包将 react
列为需要提供的外部包。这样做是为了减小包的大小,并防止用户多次加载 react
。您可以通过模块系统提供 react
,也可以直接在 window
上加载 react
。
您可以使用 UMD 直接在浏览器中运行 react-beautiful-dnd
。
<!-- 同级依赖 -->
<script src="https://unpkg.com/react@16.3.1/umd/react.development.js"></script>
<!-- lib(将 x.x.x 更改为您想要的版本)-->
<script src="https://unpkg.com/react-beautiful-dnd@x.x.x/dist/react-beautiful-dnd.js"></script>
<!-- 需要挂载您的 React 应用 -->
<script src="https://unpkg.com/react-dom@16.3.1/umd/react-dom.development.js"></script>
<script>
const React = window.React;
const ReactDOM = window.ReactDOM;
const { DragDropContext, Draggable, Droppable } = window.ReactBeautifulDnd;
function App() {
// ...
}
// 如果你的环境支持,你可以使用 JSX
ReactDOM.render(React.createElement(App), document.getElementById('app'));
</script>
还有一个 示例 codepen 可以用来演示这种安装方法。
ClojureScript
你可以在 ClojureScript
中使用 CLJSJS 来使用 react-beautiful-dnd
!