React使用react-sortable-hoc如何实现拖拽效果

 更新时间:2024年07月08日 09:03:58   作者:枕着光的她  
这篇文章主要介绍了React使用react-sortable-hoc如何实现拖拽效果问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

React使用react-sortable-hoc拖拽效果

我们先看看效果

在react中实现拖拽效果我使用的是react-sortable-hoc 这个库,

安装这个库

npm install react-sortable-hoc

同时要下载 array-move :

npm install array-move

参考文档: React Sortable Higher-order Components

文档中引入的是

import arrayMove from 'array-move';

在我的项目中会报错,应该是版本更新替换了这个方法,

改成下面这样就能使用了,讲以前用到 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">
            {/* 循环渲染元素 */}
            {items.map((value, index) => (
                <SortableBox key={`item-${index}`} index={index} value={value} />
            ))}
        </div>
    );
};

const SortableBoxList = sortableContainer(BoxList);

const List = () => {
    const [items, setItems] = useState([]);

    useEffect(() => {
        // 从后端请求接口数据
        axios.get("http://localhost:3001/list").then(({ data }) => {
            console.log(data);
            setItems(data)
        })
    }, [])

    const onSortEnd = ({ oldIndex, newIndex }) => {
        setItems(arrayMoveImmutable(items, oldIndex, newIndex));  //获得新旧两个index,将数组进行修改
    };

    return (
        <div>
            <h1>Box List</h1>
            <SortableBoxList items={items} onSortEnd={onSortEnd} />
        </div>
    );
};

export default List;

react-sortable-hoc 拖拽组件的时候消失

直接使用的antd的拖拽手柄例子

正常表格显示

拖拽的时候消失了

拖拽放到第一条放开是可以成功的

这个组件消失就很难受,我加过z-index结果没啥用,实际上z-index要加在拖拽的item上才会有效果

这样拖拽效果就很明显了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • react-redux的connect用法详解

    react-redux的connect用法详解

    react-redux是react官方推出的redux绑定库,React-Redux 将所有组件分成两大类一个是UI组件和容器组件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-01-01
  • 在React中this容易遇到的问题详解

    在React中this容易遇到的问题详解

    这篇文章主要介绍了在React中this容易遇到的问题总结,文中有详细的示例代码,希望对大家有一定的帮助,需要的朋友可以参考下
    2023-05-05
  • React Native 脚手架的基本使用详解

    React Native 脚手架的基本使用详解

    这篇文章主要介绍了React Native 脚手架的基本使用详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • React Fiber 链表操作及原理示例详解

    React Fiber 链表操作及原理示例详解

    这篇文章主要为大家介绍了React Fiber 链表操作原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • react滚动加载useInfiniteScroll 详解

    react滚动加载useInfiniteScroll 详解

    使用useInfiniteScroll hook可以处理检测用户何时滚动到页面底部的逻辑,并触发回调函数以加载更多数据,它还提供了一种简单的方法来管理加载和错误消息的状态,今天通过实例代码介绍下react滚动加载useInfiniteScroll 相关知识,感兴趣的朋友跟随小编一起看看吧
    2023-09-09
  • react使用useState修改对象或者数组的值无法改变视图的问题

    react使用useState修改对象或者数组的值无法改变视图的问题

    这篇文章主要介绍了react使用useState修改对象或者数组的值无法改变视图的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • React 原理详解

    React 原理详解

    这篇文章主要介绍了深入理解react的原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-10-10
  • React.js源码解析setState流程

    React.js源码解析setState流程

    这篇文章主要为大家介绍了React.js源码解析setState流程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • React高级指引之Refs and the DOM使用时机详解

    React高级指引之Refs and the DOM使用时机详解

    在典型的React数据流中,props是父组件与子组件交互的唯一方式。要修改一个子组件,你需要使用新的props来重新渲染它。但是,在某些情况下,你需要在典型数据流之外强制修改子组件
    2023-02-02
  • 原生+React实现懒加载(无限滚动)列表方式

    原生+React实现懒加载(无限滚动)列表方式

    这篇文章主要介绍了原生+React实现懒加载(无限滚动)列表方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论