Вот базовый c рабочий пример простого перетаскивания элементов (на случай, если кто-то его ищет). Я решил задокументировать свое обучение здесь, потому что чувствую, что в официальных документах отсутствуют коррективные примеры. Мне нравятся примеры "Hello World".
Первое, что нужно понять, это то, что использование библиотеки требует понимания трех компонентов. Каждый компонент имеет свой соответствующий шаблонный код.
Они (скрыты внизу страницы) в официальных документах.
<DragDropContext />
- Оборачивает ту часть вашего приложения, которую вы хотите иметь перетаскивание включено для
<Droppable />
- область, в которую можно попасть. Содержит компоненты
<Draggable />
- Что можно перетаскивать вокруг
Ваше приложение должно быть заключено в один DragDropContext (несколько DragDropContext не поддерживаются). Этот пример имеет минимальное состояние. Свойства id в объектах состояния являются обязательными (они могут называться по-разному, но, тем не менее, необходимы).
src / App. js
import React,{useState} from 'react';
import {DragDropContext} from 'react-beautiful-dnd';
import Column from './Components/Column';
function App() {
const [listOne, setListOne] = useState([{id:"1", title:"Test-1"},{id:"2", title:"Test-2"}]);
const [listTwo, setListTwo] = useState([{id:"3", title:"Test-3"},{id:"4", title:"Test-4"}]);
return (
<DragDropContext onDropEnd={result => console.log(result)}>
<Column id="1" list = {listOne}/>
<Column id="2" list = {listTwo}/>
<div> context hello world </div>
</DragDropContext>
);
}
export default App;
<Droppable/>
гнездо компонентов <Draggable/>
компоненты. Требуется код возвращаемой функции котельной пластины:
{provided => (
)}
Пояснение для каждого свойства provided
- здесь
src / Components / Column
import React from 'react';
import {Droppable} from 'react-beautiful-dnd';
import Task from "../../Components/Task"
function Column(props){
const { classes, id, list } = props;
let style = {
backgroundColor:"orange",
height:"300px",
width:"400px",
margin:"100px"
}
console.log(list)
return (
<Droppable droppableId = {id}>
{provided => (
<div {...provided.droppableProps} ref={provided.innerRef} style={style}>
{list.map((val,index)=>{
return <Task id={val.id} key={index} index={index} title={val.title}/>
})}
{provided.placeholder}
</div>
)
}
</Droppable>
)
}
export default Column
src / Компоненты / Задача
import React from 'react';
import {Draggable} from 'react-beautiful-dnd';
function Task(props){
const { classes, id, index,title } = props;
let style = {
backgroundColor:"red",
}
return (
<Draggable draggableId ={id} index={index} >
{(provided) => (
<div
ref={provided.innerRef}
{...provided.draggableProps}
{...provided.dragHandleProps}
>
<h4 style={style}>{title}</h4>
</div>
)}
</Draggable>
)
}
export default Task