[英]How to prevent conflicting events (I think) in React?
我正在使用react-beautiful-dnd
:
<DragDropContext>
<Droppable>
{(provided, snapshot) => (
<div>
<Draggable><Item with Slider></Draggable>
<Draggable><Item with Slider></Draggable>
<Draggable><Item with Slider></Draggable>
<Draggable><Item with Slider></Draggable>
etc
</div>
)}
</Droppable>
</DragDropContext>
我的理解是Draggable
將具有多種事件偵聽器,以允許它檢測何時單擊/單擊和拖動/等。
我正在使用的Slider
組件也將具有類似的事件(因為我假設它提供了與Draggable
類似的事件偵聽器)。
我怎樣才能:
react-beautiful-dnd
以忽略從某些目標發出的事件或者
react-beautiful-dnd
不接收事件? 下面的屏幕截圖顯示了兩個滑塊 - (1) 一個 React 組件 ( material-ui
) 和 (2) 一個<input type="range" />
組件。 正常范圍工作正常(不會觸發拖放),而滑塊則不然。
請參閱: 代碼沙箱
完成此操作的關鍵是僅將擴展{...provided.dragHandleProps}
添加到內部 div 並確保{...provided.dragHandleProps}
不在容器父級上,這通常是直接子級的 div <Draggable>
<Droppable droppableId="featureWidgets">
{(provided: any) => (
<div {...provided.droppableProps} ref={provided.innerRef}>
<FeaturesListView>
{featureWidgets.map(({id, type}, index) => {
return (<Draggable key={id} draggableId={id} index={index}>
{(provided) => (
<div
ref={provided.innerRef} {...provided.draggableProps} ///* NO NO not here {...provided.dragHandleProps} */
<div {...provided.dragHandleProps}>drag grip handle</div>
<WidgetRow>
<Slider/>
</WidgetRow>
</div>
)}
</Draggable>);
})}
{provided.placeholder}
</FeaturesListView>
</div>
)}
</Droppable>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.