Сортировка списка перетаскиванием часто встречается при разработке. Колесо для сортировки методом перетаскивания уже существует, зачем автор его разработал? После небольшого исследования существующее перетаскивание имеет следующие проблемы:
- Большинство библиотек сортировки имеют слишком много функций и поддерживают перетаскивание различных сценариев, что приводит к слишком большим пакетам.
- Сложный в использовании и дорогой в освоении
- Несовместимо с реакцией, реакция управляет рендерингом компонентов на основе состояния, а некоторые библиотеки перетаскивания по-прежнему основаны на операциях dom.
Просто авторский проектyapiНеобходимо использовать возможности сортировки перетаскиванием, для этого колесо, перетаскивание фокуса в списке, выход из других вещей.
Вот пример кода:
<EasyDragSort onChange={this.handleDragMove} data={this.state.list} >
{this.state.list.map( (item, index) =>{
return <div className={this.state.curMoveItem === index? 'item active' : 'item'}
key={item.name}
onClick={()=> {
let newItems = this.state.list.slice();
newItems.splice(index, 1);
this.setState({list: newItems});
}}
>{item.name}</div>
})}
</EasyDragSort>
Он еще не был отправлен в npm. Он очень прост в использовании. Следующий список обернут компонентом EasyDragSort следующим образом:
<EasyDragSort onChange={this.handleDragMove} data={this.state.list}>
// list...
</EasyDragSort>
Если вы можете использовать его, вы можете обратить внимание. Тестовый код еще не добавлен. Если вы хотите его использовать, скопируйте исходный код напрямую.