我在使用React-DND时遇到问题。

我的问题是关于防止拖动组件到特定状态。但是“ canDrag”只能具有道具并作为参数进行监视。 (在我的情况下,monitor.getItem显示为null),并且我无法使用道具,因为这些道具将出现在每个组件中(因为道具来自父组件)。

有谁有解决这个问题的想法?

谢谢

最佳答案

您可以在组件中而不是在规格中完成

@DragSource(dragtype, sourceSpec, cnt => ({
  connectDragSource: cnt.dragSource(),
}))
export default class Dragable extends React.Component {
  state = {
    canDrag: false,
  }
  render() {
   const { connectDragSource } = this.props;
   const { canDrag } = this.state;
   const cntDragSource = canDrag ? connectDragSource : i => i;
    return cntDragSource(
     <div className="drag-target" />
    )
  }
}

09-25 15:38