Я не мог заставить мою таблицу реагирования быть сортируемой с помощью jquery ui sortable, поскольку реакция довольно строга в отношении вовлечения других библиотек в манипуляции с DOM. Я попытался отменить фактическое перетаскивание, но, по-видимому, это все еще мешает DOM. Мне нужно было исправить быстро, вот что я придумал: чтобы реакция не путалась с измененным DOM, я использую флаг состояния, чтобы вызвать полную повторную визуализацию таблицы без него. попасть в виртуальный DOM:
class Whatever extends Component { state = { showTable: true, }; componentDidMount() { this.setTableSortable(); } setTableSortable() { const tbody = this.getTableBody(); tbody.sortable({ update: this.handleSort, }); } handleSort = () => { const sortedTableIds = ...;// get the ids by querying the DOM this.setState({ showTable: false }); // hide the table // do whatever you need with the ids, like a dispatch this.setState({ showTable: true }); //show the table back this.setTableSortable(); // call .sortable() again } getTableBody() { return jQuery(ReactDOM.findDOMNode(this).querySelector(‘tbody’)); } render() { const table = this.state.showTable ? {<Table>...</Table>} : null; ... }
Я знаю, что это чертовски грязно, но это может спасти вас от невыполненного дедлайна.