使用 React-dnd 看不到我正在拖动的项目

Pat*_*n92 3 javascript drag-and-drop reactjs react-dnd

所以基本上,当我使用 html5 后端时一切正常,但由于我的应用程序也将在手机上使用,我需要切换到触摸后端。当我这样做时,一切正常,只是我没有看到我正在拖动的项目。掉落区域接受物品,更改课程和所有内容,但我看不到该死的东西,无论是在 PC 上还是在手机上都看不到。我尝试使用 DragPreviewImage 并且它在切换到 html5backend 但没有触摸时工作。

拖动组件:

const [{isDragging}, drag] = useDrag({
    item: {
        type:ItemTypes.CARD,
        name: props.person,
        id: props.id
    },
    collect: monitor => ({
        isDragging: !!monitor.isDragging(),
      }),
})


return (
    <div
    ref={drag}
    className={`${props.classNameToDisplay} ${isDragging ? 'onDrag' : ""}`}
    id={props.id}
    key={props.person}
    onClick={(e) => props.itemOnClick(e, props.person, props.itemClicked)}>
    {props.person}
</div>
);
Run Code Online (Sandbox Code Playgroud)

删除输入组件:

const DropInput = (props) => {

const[{isOver, canDrop}, drop] = useDrop({
    accept:ItemTypes.CARD,
    canDrop:(item, monitor) => true,
    drop: (item, monitor) => props.itemOnDrop(item,monitor, "regularBet", props.itemClicked),
    collect: monitor => ({
        isOver : !!monitor.isOver(),
        canDrop : !!monitor.canDrop()
    })
})

return (
    <input
    ref={drop}
    className={`${props.classNameToDisplay} ${isOver && canDrop ? 'onDropAllowed' : ''} `}
    onKeyUp={e => props.itemOnKeyUp(e, props.itemClicked)} 
    onChange={e => props.itemOnChange(e, 'name')}
    type="text"
    name={props.itemClicked}
    id={props.itemClicked}
    value={props.itemName}
    placeholder="ime"/>
);
Run Code Online (Sandbox Code Playgroud)

Sim*_*ble 5

在花了一个小时左右的时间试图自己解决这个问题后,我发现react-dnd-preview适合我的情况。希望这也适用于您。

  • 不幸的是目前与 React18 不兼容 (2认同)