如何通过反应使输入在漂亮的 dnd 中可拖动

Posted

技术标签:

【中文标题】如何通过反应使输入在漂亮的 dnd 中可拖动【英文标题】:How to make input draggable in beautiful dnd with react 【发布时间】:2022-01-06 09:02:18 【问题描述】:

我制作了可拖动项目的列表,我使用带有 react-beautiful-dnd 的 React.js 我创建了列表,但问题是它有输入字段。我希望这些字段也是可拖动的,我没有尝试多少次,以及我在谷歌上搜索了多少这个问题。这就是我的代码的样子:

<DragDropContext onDragEnd=handleOnDragEnd>
      <Droppable droppableId="characters">
        (provided) => (
          <ul
            className="characters"
            ...provided.droppableProps
            ref=provided.innerRef
          >
            characters.map(( id, name, thumb , index) => 
              return (
                <Draggable key=id draggableId=id index=index>
                  (provided) => (
                    <li
                      ref=provided.innerRef
                      ...provided.draggableProps
                      ...provided.dragHandleProps
                    >
                      <div className="characters-thumb">
                        <img src=thumb alt=`$name Thumb` />
                      </div>
                      <input
                        defaultValue=name
                        draggable="true"
                        onDragStart=(event) =>
                          event.dataTransfer.setData(
                            "text/plain",
                            "This text may be dragged"
                          )
                        
                      />
                    </li>
                  )
                </Draggable>
              );
            )
            provided.placeholder
          </ul>
        )
      </Droppable>
    </DragDropContext>

【问题讨论】:

【参考方案1】:

react-beautiful-dnd 中阻止了交互元素的拖动,这是预期的行为。 看看这些文件:is-event-in-interactive-element.js 和 use-sensor-marshal.js

您可以用另一个组件包装您的输入组件(例如 divspan

【讨论】:

以上是关于如何通过反应使输入在漂亮的 dnd 中可拖动的主要内容,如果未能解决你的问题,请参考以下文章

使用 HOC 可拖动元素反应 DnD 引发无法设置未定义错误的属性“道具”

如何使图库的内容(包括视频和图像文件)在本机反应中可滚动?

如何克隆反应元素以进行拖动

如何使滑块输入独立于内部的反应变量?

formArray 中的可拖动 formGroups(反应式表单)

反应:如何使输入仅与提供的文本量一样宽?