Drag and Drop (Реакт-Драгула)

Я пытаюсь обновить состояние в компоненте реакции после падения Dragula-Reaction.

Я, который реагирует, не может обработать изменение DOM, сделанное Dragula, и я получаю "NotFoundError (DOM Exception 8): объект не может быть найден здесь".

Если вы просто измените порядок, все работает, как и ожидалось, но, перемещая ребенка между родителями, вы получите ошибку.

Вот рабочий пример.

И вот важный код:

  handleDrop(el, target, source, sibling) {
    const newList = this.state.list.splice(0);
    const nodes = target.children;
    for (let i = 0; i < nodes.length; i++) {
      const ch = this.findItem(newList, nodes[i].id);
      if (ch) {
        ch.order = i;
        ch.parent = target.getAttribute('data-type');
      }
    }
    this.fix(newList);
    this.setState({list: newList});
  }

  fix(list) {
    for(let i=0; i<list.length; i++) {
        if (list[i].children) {
        for (let j=0; j<list[i].children.length; j++) {
            if (list[i].children[j].parent != list[i].id) {
            const fixItem = list[i].children[j];
            const index = list[i].children.findIndex(l => l.id == fixItem.id);
            list[i].children.splice(index, 1)
            const parent = list.find(p => p.id == fixItem.parent);
            parent.children.push(fixItem);
          }
        }
      }
    }
  }

Спасибо за помощь!

0 ответов

Другие вопросы по тегам