React.js-可拖动元素上的setDragImage

Ben*_*Ben 5 javascript html5 draggable node.js reactjs

我尝试交换拖动可拖动元素(在本例中为ul以下)时浏览器使用的默认图像。这是我的代码。我没有收到任何错误-只是不起作用,剩下的是浏览器使用的默认图片。

drag(e) {
  let img = new Image()
  img.src = 'https://some-image.png'
  e.dataTransfer.setDragImage(img, 0, 0)
}

render() {
  return(
    <ul draggable="true" onDrag={(e) => {this.drag(e)}>
      <li>1</li>
      <li>2</li>
    </ul>
  )
}
Run Code Online (Sandbox Code Playgroud)

Sau*_*uce 3

当您调用 时,图像尚未加载setDragImage()。我通过在安装上创建图像并将其存储在状态中来处理这个问题:

 componentDidMount() {
    const img = new Image();
    img.src = 'https://some-image.png';
    img.onload = () => this.setState({ dragImg: img });
 }
 drag(e) {
    e.dataTransfer.setDragImage(this.state.dragImg, 0, 0);
 }
Run Code Online (Sandbox Code Playgroud)

  • 那么等等,您必须在调用“drag”之前创建拖动图像,并对每个可拖动项目执行此操作,无论它是否实际上被拖动?因此,如果我有数百个可拖动元素,我还必须在 RAM 中为恰好被拖动的任何元素提供重影图像?那是不对的。 (3认同)