Теперь я точно знаю, почему это происходит!После нескольких часов поисков я нашел ответ.Этот вызов данных внутри одного и того же компонента, во-первых, является плохой практикой, а во-вторых, он приводит к тому, что перетаскивание не будет таким плавным и дружественным, как хотелось бы.Прокомментируйте эти строки, и все готово!
Шучу.
Чтобы по-прежнему получать эти данные и сохранять плавность движения, нужно использовать в React идеологию дизайна, называемую Container vs. Презентационные компоненты.Я узнал об этом из этой статьи: https://css -tricks.com / learning-response-container-components /
Это говорит о разделении ваших компонентов на родительские компоненты, которые получаютданные и убедитесь, что они правильные, а также обрабатывают события, а затем имеют дочерние компоненты, чтобы в основном быть «внешними» компонентами, управляемыми данными.Это сработало для меня.Не забудьте поместить
dragula([arrayOfDivs])
в componentDidMount () компонента контейнера.
Так, например, здесь:
class DataContainer extends Component {
constructor() {
super();
this.state = {
data: null
}
}
componentDidMount() {
getData().then(data => this.setState({ data: data }));
}
render() {
if(dataIsRight(this.state.data)) {
return <PresentationalComponent data={data} />;
}
}
икомпонент представления будет очень простым
class PresentationComponent extends Component {
render() {
<div> {this.props.data} </div>
}
}
Если у кого-то еще возникла эта проблема, и это помогло, дайте мне знать!