gpt4 book ai didi

reactjs - 使用 react-dnd 和 useDrag 和 useDrop 进行测试

转载 作者:行者123 更新时间:2023-12-04 11:04:09 26 4
gpt4 key购买 nike

有没有人能够测试 https://github.com/react-dnd/react-dnd 中的拖放功能?使用带有 useDrag 和 useDrop 钩子(Hook)的功能组件?

根据此处找到的示例 http://react-dnd.github.io/react-dnd/docs/testing ,它们要么用 DragSource 或 DropTarget HOC 装饰原始组件。
例如:

// ...

export interface BoxProps {
name: string

// Collected Props
isDragging: boolean
connectDragSource: ConnectDragSource
}
const Box: React.FC<BoxProps> = ({ name, isDragging, connectDragSource }) => {
const opacity = isDragging ? 0.4 : 1
return (
<div ref={connectDragSource} style={{ ...style, opacity }}>
{name}
</div>
)
}

export default DragSource(
ItemTypes.BOX,
{
beginDrag: (props: BoxProps) => ({ name: props.name }),
endDrag(props: BoxProps, monitor: DragSourceMonitor) {
const item = monitor.getItem()
const dropResult = monitor.getDropResult()

if (dropResult) {
alert(`You dropped ${item.name} into ${dropResult.name}!`)
}
},
},
(connect: DragSourceConnector, monitor: DragSourceMonitor) => ({
connectDragSource: connect.dragSource(),
isDragging: monitor.isDragging(),
}),
)(Box)

示例取自 https://github.com/react-dnd/react-dnd/blob/master/packages/documentation/examples-decorators/src/01-dustbin/single-target/Box.tsx

不过,我找不到任何使用他们的钩子(Hook)进行测试的例子。他们确实有使用装饰器和钩子(Hook)的代码示例( https://github.com/react-dnd/react-dnd/tree/master/packages/documentation),但也有仅使用装饰器的测试示例。

最佳答案

我从github票上复制了这个并为我工作:

const dragAndDrop = (src: Element, dst: Element) => {
fireEvent.dragStart(src);
fireEvent.dragEnter(dst);
fireEvent.drop(dst);
fireEvent.dragLeave(dst);
fireEvent.dragEnd(src);
};
const allSections = rendered.getAllByRole('dropzone');

const marketSection = allSections[0];
const marketExpandedSection = allSections[1];

const basisIdDrag = within(marketSection).getByRole('draggable');

act(() => {
dragAndDrop(basisIdDrag, marketExpandedSection);
});

关于reactjs - 使用 react-dnd 和 useDrag 和 useDrop 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57994630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com