gpt4 book ai didi

javascript - 在 React 的 Div 中拖动图像时如何防止在新选项卡中打开

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

我已通过单击浏览器按钮 成功实现了添加多个图像。我的问题是当我想拖动图像时。它会打开一个新选项卡。我如何防止它打开?我已经放置了 e.preventDefault() 但它仍在打开。

Codesandbox 在这里 CLICK HERE

    <Paper elevation={4} className={classes.mainContainer}>
<div
className={classes.dropzone}
style={{
border: "2px dashed #000000"
}}
onDragOver={(e) => e.preventDefault()}
onDrop={(e) => uploadImage(e.currentTarget.files)}
>
<div>
</div>
<div>
<h3 className={classes.dragHereText}>Drag & Drop Images here</h3>
<p className={classes.or}>or</p>
<Button
size="small"
variant="contained"
component="label"
color="primary"
>
<input
type="file"
accept="image/*"
multiple
className={classes.uploadInput}
onChange={(e) => uploadImage(e.currentTarget.files)}
/>
Browse files
</Button>
</div>
</div>
</Paper>

最佳答案

首先,您还需要防止 onDrop 处理程序出现默认情况。此外,来自 onDrop 的事件与 onChange 事件不同,因此您需要以不同方式处理它。这是一个例子:

const handleDrop = (e) => {
// Note: preventDefault is on nativeEvent
e.nativeEvent.preventDefault()
if (!e) return;
// Note: files are under nativeEvent.dataTransfer
const files = e.nativeEvent.dataTransfer.files;
const fileList = Array.from(files);
const images = fileList.map((image) => ({
imageName: image.name,
imageFile: image
}));
console.log(images);
};

然后像这样传递事件:

<div
className={classes.dropzone}
style={{
border: "2px dashed #000000"
}}
onDragOver={(e) => e.preventDefault()}
onDrop={(e) => handleDrop(e)}
>

关于javascript - 在 React 的 Div 中拖动图像时如何防止在新选项卡中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69820897/

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