需要有关拖放网格的建议,我们想要类似的行为:https://grapesjs.com/demo.html

我们已经使用react-dnd实现了拖放操作,它工作正常。问题是当我们想要在拖动时获取元素的位置时,检查是否上下放置。当前我正在按照以下方式获取位置:

悬停时,我将在y的位置内部useDrop Hook.MY代码为:

const [{ isOver,canDrop },drop] = useDrop({
  accept: getacceptType(schema),drop: addComponentOnDrop(schema),collect: monitor => ({
    isOver: monitor.isOver({ shallow: true }),canDrop: monitor.canDrop(),}),hover(props,monitor) {
    if (!monitor.canDrop()) {
      return;
    }
    const { y } = monitor.getclientOffset();
    sety(y);
  },});

使用y的值,我正在检查悬浮的元素是否在dropTarget之上或之下。我的代码是:

function mouseOver(event) {
  const { target } = event;
  const { top,height } = target.getBoundingClientRect();
  if (y < top + height / 2) {
    sethover("above");
  } else {
    sethover("below");
  }
}

我在这里设置的状态用于更新上下文api.setHover()是上下文api的一部分。上下文api用于我的容器组件,其中我编写了方法(addComponentOnDrop)以在架构上添加组件/ array集合。

它正在工作,但效率不高。还要更新状态/上下文api以在上方/下方显示onHover的样式如此之快,以至于状态更新太频繁并显示故障。请提出一些有效的方法来实现此目的。

wjswcj 回答:需要有关拖放网格的建议,我们想要类似的行为:https://grapesjs.com/demo.html

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2758097.html

大家都在问