当抓取网格节点周围的元素时 ReactJS 消失
ReactJS when grabbing element around grid nodes are disapearing
我正在尝试围绕我的网格移动这个 gree 节点,但是当我移动它时,第一行中的最后一个节点消失了。
这是我的代码:
const onDrop = (e) => {
e.preventDefault();
console.log(e.target.id)
let data = e.dataTransfer.getData("text");
e.target.appendChild(document.getElementById(data));
}
const onDragStart = (e) => {
e.dataTransfer.setData("text", e.target.id);
}
const onDragOver = (e) => {
e.dataTransfer.setData("text", e.target.id);
}
return (
<div
onDrop={(e) => (onDrop(e))}
onDragOver={(e) => (onDragOver(e))}
>
<div
id={`${row}-${col}`}
className={`node ${classes}`}
draggable={draggAble}
onDragStart={(e) => {
if (draggAble) {
onDragStart(e)
} else {
e.preventDefault()
}
}}
/>
</div>
)
整个 div 与此代码在另一个 div 中。
<div className="Grid" onDrop={(e) => (onDrop(e))} onDragOver={(e) => (onDragOver(e))}>
这是我的 fiddle 的 link 片段 https://jsfiddle.net/Efiqqe/2tjs4v3f/1/
每个代码都在不同的组件中
你有什么技巧可以让最后一个节点停止消失吗?
感谢您的回答,如果post不够清楚,我很抱歉。
您每次都移动 0-0
的子项,因此您必须将其添加到第一个框中。
const div = document.createElement('div');
div.id = 'temp-0-0';
div.className = 'node';
div.draggable = false;
if(!document.getElementById('temp-0-0')) {
document.getElementById('node-0-0').appendChild(div);
}
JSFiddle:https://jsfiddle.net/gupay0rc/2/
我正在尝试围绕我的网格移动这个 gree 节点,但是当我移动它时,第一行中的最后一个节点消失了。
这是我的代码:
const onDrop = (e) => {
e.preventDefault();
console.log(e.target.id)
let data = e.dataTransfer.getData("text");
e.target.appendChild(document.getElementById(data));
}
const onDragStart = (e) => {
e.dataTransfer.setData("text", e.target.id);
}
const onDragOver = (e) => {
e.dataTransfer.setData("text", e.target.id);
}
return (
<div
onDrop={(e) => (onDrop(e))}
onDragOver={(e) => (onDragOver(e))}
>
<div
id={`${row}-${col}`}
className={`node ${classes}`}
draggable={draggAble}
onDragStart={(e) => {
if (draggAble) {
onDragStart(e)
} else {
e.preventDefault()
}
}}
/>
</div>
)
整个 div 与此代码在另一个 div 中。
<div className="Grid" onDrop={(e) => (onDrop(e))} onDragOver={(e) => (onDragOver(e))}>
这是我的 fiddle 的 link 片段 https://jsfiddle.net/Efiqqe/2tjs4v3f/1/
每个代码都在不同的组件中
你有什么技巧可以让最后一个节点停止消失吗?
感谢您的回答,如果post不够清楚,我很抱歉。
您每次都移动 0-0
的子项,因此您必须将其添加到第一个框中。
const div = document.createElement('div');
div.id = 'temp-0-0';
div.className = 'node';
div.draggable = false;
if(!document.getElementById('temp-0-0')) {
document.getElementById('node-0-0').appendChild(div);
}
JSFiddle:https://jsfiddle.net/gupay0rc/2/