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 ( //单个盒子
        

{value.name}

); }; const SortableBox = sortableElement(Box); const BoxList = ({ items, onSortEnd }) => { return (
{/* 循环渲染元素 */} {items.map((value, index) => ( ))}
); }; 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 (

Box List

); }; export default List;

你可能感兴趣的:(react.js,前端,前端框架)