Tạo một component Drag and Drop trong ReactJS
Trong bài tập này, mình sẽ tạo một component DragAndDrop trong ReactJS để thực hiện chức năng kéo thả (drag and drop). Khi người dùng kéo một phần tử, mình sẽ hiển thị vị trí mới của phần tử đó trong console.
Drag and Drop trong ReactJS
Đầu tiên, mình sẽ tạo một component React để thực hiện chức năng kéo thả. Đặt tên component là DragAndDrop.js.
// src/components/DragAndDrop.js
import React from 'react';
import './DragAndDrop.css';
const DragAndDrop = () => {
const handleDragStart = (e) => {
e.dataTransfer.setData('text/plain', 'Drag Me!');
};
const handleDragOver = (e) => {
e.preventDefault();
};
const handleDrop = (e) => {
e.preventDefault();
const newPosition = e.clientX + "," + e.clientY;
console.log('New position:', newPosition);
};
return (
<div
className="draggable-element"
draggable="true"
onDragStart={handleDragStart}
onDragOver={handleDragOver}
onDrop={handleDrop}
>
Drag me!
</div>
);
};
export default DragAndDrop;
CSS cho DragAndDrop
Tiếp theo, mình sẽ tạo một file CSS để thiết lập kiểu dáng cho component DragAndDrop. Đặt tên file là DragAndDrop.css.
/* src/components/DragAndDrop.css */
.draggable-element {
width: 150px;
height: 50px;
background-color: #66ccff;
color: white;
text-align: center;
line-height: 50px;
cursor: grab;
user-select: none;
}
Tích hợp vào ứng dụng
Cuối cùng, mình tích hợp component DragAndDrop vào ứng dụng chính.
// src/App.js
import React from 'react';
import DragAndDrop from './components/DragAndDrop';
function App() {
return (
<div className="App">
<h1>ReactJS: Handling Events</h1>
<DragAndDrop />
</div>
);
}
export default App;Kết quả:

Bài tập Drag and Drop đã hoàn thành. Bạn đã tạo một component React có khả năng thực hiện chức năng kéo thả. Khi bạn kéo phần tử, vị trí mới của nó sẽ được hiển thị trong console.
Tuy nhiên, để có trải nghiệm tốt hơn, bạn có thể mở rộng chức năng này bằng cách thêm logic để cập nhật vị trí của phần tử trên giao diện người dùng. Chúc bạn thành công!
Bài giải
-------------------- ######## --------------------
Câu hỏi thường gặp liên quan:
- Tạo một component ButtonClick trong ReactJS
- Tạo một component ToggleButton trong ReactJS
- Tạo một component InputChange trong ReactJS
- Tạo một component MouseHover trong ReactJS
- Tạo một component FormSubmission trong ReactJS
- Tạo một component DoubleClick có chứa một phần tử trong ReactJS
- Tạo một component KeyPress trong ReactJS
- Tạo một component Image Click trong ReactJS
- Tạo một component Context Menu trong ReactJS
- Tạo một component Drag and Drop trong ReactJS
- Tạo một component LinkClick trong ReactJs
- Tạo một component ResizeWindow trong ReactJS
- Tạo một component HoverEffect trong ReactJS
- Tạo một component DynamicButton trong ReactJS
- Tạo một component PasswordStrengthChecker trong ReactJS
- Tạo một component CopyToClipboard trong ReactJS
- Tạo một component ScrollEvent trong ReactJS
- Tạo một component Autocomplete trong ReactJS

Các hàm xử lý chuỗi trong Javascript (cắt / tách / nối chuỗi ..)
Chia lấy phần dư / chia lấy phần nguyên trong javascript
Các cách khai báo biến trong Javascript
Các sự kiện (Event) trong Javascript
Hướng tạo thanh search bar bằng CSS
Hàm array.slice() trong Javascript
Tính tổng hai số bằng Javascript (cộng hai số)
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng