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

在react中實現(xiàn)拖拽效果我使用的是react-sortable-hoc 這個庫,
安裝這個庫
npm install react-sortable-hoc
同時要下載 array-move :
npm install array-move
參考文檔: React Sortable Higher-order Components
文檔中引入的是
import arrayMove from 'array-move';
在我的項目中會報錯,應(yīng)該是版本更新替換了這個方法,
改成下面這樣就能使用了,講以前用到 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 ( //單個盒子
<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(() => {
// 從后端請求接口數(shù)據(jù)
axios.get("http://localhost:3001/list").then(({ data }) => {
console.log(data);
setItems(data)
})
}, [])
const onSortEnd = ({ oldIndex, newIndex }) => {
setItems(arrayMoveImmutable(items, oldIndex, newIndex)); //獲得新舊兩個index,將數(shù)組進(jìn)行修改
};
return (
<div>
<h1>Box List</h1>
<SortableBoxList items={items} onSortEnd={onSortEnd} />
</div>
);
};
export default List;
react-sortable-hoc 拖拽組件的時候消失
直接使用的antd的拖拽手柄例子

正常表格顯示

拖拽的時候消失了

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

這個組件消失就很難受,我加過z-index結(jié)果沒啥用,實際上z-index要加在拖拽的item上才會有效果

這樣拖拽效果就很明顯了

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
React生命周期方法之componentDidMount的使用
這篇文章主要介紹了React生命周期方法之componentDidMount的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
React Hook 監(jiān)聽localStorage更新問題
這篇文章主要介紹了React Hook 監(jiān)聽localStorage更新問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
用React-Native+Mobx做一個迷你水果商城APP(附源碼)
這篇文章主要介紹了用React-Native+Mobx做一個迷你水果商城APP,功能需要的朋友可以參考下2017-12-12
React實現(xiàn)多標(biāo)簽在有限空間內(nèi)展示
在業(yè)務(wù)中,需要在一個卡片組件中展示多個標(biāo)簽,標(biāo)簽組件高度相同,寬度和出現(xiàn)順序不同,要求標(biāo)簽只能在有限的空間內(nèi)展示,所以本文給大家介紹了React實現(xiàn)多標(biāo)簽在有限空間內(nèi)展示,需要的朋友可以參考下2023-12-12
React?antd中setFieldsValu的簡便使用示例代碼
form.setFieldsValue是antd?Form組件中的一個方法,用于動態(tài)設(shè)置表單字段的值,它接受一個對象作為參數(shù),對象的鍵是表單字段的名稱,值是要設(shè)置的字段值,這篇文章主要介紹了React?antd中setFieldsValu的簡便使用,需要的朋友可以參考下2023-08-08

