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