React使用react-sortable-hoc如何實(shí)現(xiàn)拖拽效果
React使用react-sortable-hoc拖拽效果
我們先看看效果

在react中實(shí)現(xiàn)拖拽效果我使用的是react-sortable-hoc 這個(gè)庫(kù),
安裝這個(gè)庫(kù)
npm install react-sortable-hoc
同時(shí)要下載 array-move :
npm install array-move
參考文檔: React Sortable Higher-order Components
文檔中引入的是
import arrayMove from 'array-move';
在我的項(xiàng)目中會(huì)報(bào)錯(cuò),應(yīng)該是版本更新替換了這個(gè)方法,
改成下面這樣就能使用了,講以前用到 arrayMove 的地方都替換成 arrayMoveImmutable;
import { arrayMoveImmutable } from 'array-move';全部代碼:
import React, { useEffect, useState } from 'react';
import { sortableContainer, sortableElement } from 'react-sortable-hoc';
import { arrayMoveImmutable } from 'array-move';
import axios from "axios"
const Box = ({ value }) => {
return ( //單個(gè)盒子
<div className="box">
<img src={`http://localhost:3001${value.img}`} alt="" />
<p>{value.name}</p>
</div>
);
};
const SortableBox = sortableElement(Box);
const BoxList = ({ items, onSortEnd }) => {
return (
<div className="box-list">
{/* 循環(huán)渲染元素 */}
{items.map((value, index) => (
<SortableBox key={`item-${index}`} index={index} value={value} />
))}
</div>
);
};
const SortableBoxList = sortableContainer(BoxList);
const List = () => {
const [items, setItems] = useState([]);
useEffect(() => {
// 從后端請(qǐng)求接口數(shù)據(jù)
axios.get("http://localhost:3001/list").then(({ data }) => {
console.log(data);
setItems(data)
})
}, [])
const onSortEnd = ({ oldIndex, newIndex }) => {
setItems(arrayMoveImmutable(items, oldIndex, newIndex)); //獲得新舊兩個(gè)index,將數(shù)組進(jìn)行修改
};
return (
<div>
<h1>Box List</h1>
<SortableBoxList items={items} onSortEnd={onSortEnd} />
</div>
);
};
export default List;
react-sortable-hoc 拖拽組件的時(shí)候消失
直接使用的antd的拖拽手柄例子

正常表格顯示

拖拽的時(shí)候消失了

拖拽放到第一條放開是可以成功的

這個(gè)組件消失就很難受,我加過(guò)z-index結(jié)果沒(méi)啥用,實(shí)際上z-index要加在拖拽的item上才會(huì)有效果

這樣拖拽效果就很明顯了

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
React前端開發(fā)createElement源碼解讀
這篇文章主要為大家介紹了React前端開發(fā)createElement源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
react-router-dom6(對(duì)比?router5)快速入門指南
這篇文章主要介紹了快速上手react-router-dom6(對(duì)比?router5),通過(guò)本文學(xué)習(xí)最新的react-router-dom?v6版本的路由知識(shí),并且會(huì)與v5老版本進(jìn)行一些對(duì)比,需要的朋友可以參考下2022-08-08
React中使用Axios發(fā)起POST請(qǐng)求提交文件方式
這篇文章主要介紹了React中使用Axios發(fā)起POST請(qǐng)求提交文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
react-native DatePicker日期選擇組件的實(shí)現(xiàn)代碼
本篇文章主要介紹了react-native DatePicker日期選擇組件的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,有興趣的可以了解下2017-09-09
React之防止按鈕多次點(diǎn)擊事件?重復(fù)提交
這篇文章主要介紹了React之防止按鈕多次點(diǎn)擊事件?重復(fù)提交問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
React Native Popup實(shí)現(xiàn)示例
本文主要介紹了React Native Popup實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
react antd-design Select全選功能實(shí)例
這篇文章主要介紹了react antd-design Select全選功能實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
React?Context源碼實(shí)現(xiàn)原理詳解
這篇文章主要為大家介紹了React?Context源碼實(shí)現(xiàn)原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

