1 | import React, {Component} from 'react';
|
2 | import {render} from 'react-dom';
|
3 | import {sortableContainer, sortableElement} from 'react-sortable-hoc';
|
4 | import {arrayMove} from 'array-move';
|
5 |
|
6 | const SortableItem = sortableElement(({value}) => <li>{value}</li>);
|
7 |
|
8 | const SortableContainer = sortableContainer(({children}) => {
|
9 | return <ul>{children}</ul>;
|
10 | });
|
11 |
|
12 | class App extends Component {
|
13 | state = {
|
14 | items: ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5', 'Item 6'],
|
15 | };
|
16 |
|
17 | onSortEnd = ({oldIndex, newIndex}) => {
|
18 | this.setState(({items}) => ({
|
19 | items: arrayMove(items, oldIndex, newIndex),
|
20 | }));
|
21 | };
|
22 |
|
23 | render() {
|
24 | const {items} = this.state;
|
25 |
|
26 | return (
|
27 | <SortableContainer onSortEnd={this.onSortEnd}>
|
28 | {items.map((value, index) => (
|
29 | <SortableItem key={`item-${index}`} index={index} value={value} />
|
30 | ))}
|
31 | </SortableContainer>
|
32 | );
|
33 | }
|
34 | }
|
35 |
|
36 | render(<App />, document.getElementById('root'));
|
37 |
|
\ | No newline at end of file |