在React项目中将react-beautiful-dnd
与Ant Design的列表组件(如List
或Table
)结合使用,可以创建一个可拖拽的列表界面。这种结合可以提高用户界面的交互性和视觉吸引力。下面是一个基本的步骤指南,展示如何在Ant Design的List
组件中实现react-beautiful-dnd
。
首先,确保你的项目中已经安装了react-beautiful-dnd
和antd
。如果还没有安装,可以通过npm或yarn来安装它们:
npm install react-beautiful-dnd antd
或者
yarn add react-beautiful-dnd antd
在你的React组件中,首先设置一个基本的Ant Design List
,用于显示数据。
import React from 'react';
import { List } from 'antd';
const data = ['Item 1', 'Item 2', 'Item 3'];
const MyList = () => {
return (
<List
bordered
dataSource={data}
renderItem={item => (
<List.Item>
{item}
</List.Item>
)}
/>
);
};
export default MyList;
接下来,将react-beautiful-dnd
集成到你的列表中。你需要使用DragDropContext
和Droppable
以及Draggable
组件来包装你的列表项。
import React, { useState } from 'react';
import { List } from 'antd';
import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
const initialData = ['Item 1', 'Item 2', 'Item 3'];
const MyDraggableList = () => {
const [items, setItems] = useState(initialData);
const onDragEnd = (result) => {
if (!result.destination) {
return;
}
const newItems = Array.from(items);
const [removed] = newItems.splice(result.source.index, 1);
newItems.splice(result.destination.index, 0, removed);
setItems(newItems);
};
return (
<DragDropContext onDragEnd={onDragEnd}>
<Droppable droppableId="droppable">
{(provided, snapshot) => (
<List
{...provided.droppableProps}
ref={provided.innerRef}
bordered
>
{items.map((item, index) => (
<Draggable key={item} draggableId={item} index={index}>
{(provided, snapshot) => (
<List.Item
ref={provided.innerRef}
{...provided.draggableProps}
{...provided.dragHandleProps}
>
{item}
</List.Item>
)}
</Draggable>
))}
{provided.placeholder}
</List>
)}
</Droppable>
</DragDropContext>
);
};
export default MyDraggableList;
react-beautiful-dnd
提供了拖拽时的基本样式和动画,但你可能需要根据你的设计需求进行调整。你可以添加CSS来改进拖拽时的视觉反馈,例如改变背景色或边框。
领取专属 10元无门槛券
手把手带您无忧上云