Как предотвратить удаление узла после его перетаскивания из «Reaction-sortable-tree» в другой компонент? - PullRequest
0 голосов
/ 06 февраля 2019

Я использую «реагировать-сортируемое дерево» для визуализации дерева папок и «реагировать-нд» для копирования узла из дерева папок в другой компонент.

Я хочу использовать shouldCopyOnOutsideDrop проп, чтобы предотвратить удалениеперетаскиваемый узел из дерева папок (SortableTree) в другой компонент (DropTarget), но я получаю неопределенный ответный вызов и ошибку после удаления узла.

Пожалуйста, помогите мне решить проблему.

<SortableTree 
    shouldCopyOnOutsideDrop={node => { 
       console.log('!!shouldCopyOnOutsideDrop node', node); 
       // ... 
       return true;
    }} 
    dndType={'myDndType'} .... > ... 
</ SortableTree>

// !!shouldCopyOnOutsideDrop node {node: undefined, prevTreeIndex: undefined, prevPath: undefined}
// Uncaught TypeError: Cannot read property 'length' of undefined return true;

1 Ответ

0 голосов
/ 07 февраля 2019

Возможно, вы не используете функцию beginDrag.В документации DragSource см. Функцию

beginDrag(props, monitor, component) {
    // Return the data describing the dragged item
    const item = { id: props.id };
    return item;
},

. Эта функция сообщит реагирующему dnd о том, какой объект на самом деле перетаскивается, поэтому при возникновении события сброса response-dnd выдаст вам то же самое.объект, который вы вернули из этой функции.Например, в DropTarget документация см. Функцию

  drop(props, monitor, component) {
    if (monitor.didDrop()) {
      // If you want, you can check whether some nested
      // target already handled drop
      return;
    }

    // Obtain the dragged item
    const item = monitor.getItem();

    // You can do something with it
    ChessActions.movePiece(item.fromPosition, props.position);

    // You can also do nothing and return a drop result,
    // which will be available as monitor.getDropResult()
    // in the drag source's endDrag() method
    return { moved: true };
  }
};

. В этой функции монитор удерживает объект, который перетаскивается на объект перетаскивания

...