问题描述
这是分配给表以动态呈现的数组
let columns = [
{
text: "Id",dataField: "id",},{ text: "Name",dataField: "name" },{
text: "Gender",dataField: "Gender",];
我有一个类似th tag
的代码,它是react代码的一部分,它基本上呈现表。它通过数组动态呈现
{col.map((col,i) => {
return (
<th
draggable
scope="col"
key={col.text}
className={dragging ? getStyles(col.dataField) : "text"}
onDragStart={(e) => ondragstart(e,col.dataField)}
onDragEnd={(e) => handledragend(e,col.dataField)}
onDragOver={(e) => handledragover(e,"#")}
onDrop={
dragging ? (e) => handledragdrop(e,col.dataField) :null
}
>
{col.text}
</th>
);
})}
触发ondragstart时,拖动设置为true
这是我的拖放事件监听器
const ondragstart = (e: any,colname: any) => {
dragItem.current = colname;
Setdragging(true);
};
const handledragdrop = (
e:any,colname: string
) => {
e.preventDefault()
let currentitem = dragItem.current; //holds the item which is currently dragging
let hoveritem = colname; // holds the item on which the current item hovers to
let currentitemindex = col.findIndex(
(newcol) => newcol.dataField === currentitem
);
let hoveritemindex = col.findIndex(
(newcol) => newcol.dataField === hoveritem
);
if (colname !== dragItem.current) {
Setcol((col) => {
let newcol: any;
newcol = col;
[newcol[currentitemindex],newcol[hoveritemindex]=[newcol[hoveritemindex],newcol[currentitemindex]] /// swapping the hovered item and current item
return newcol;
});
}
};
const handledragend = (
e: React.DragEvent<HTMLTableHeaderCellElement>,colname: string
) => {
Setdragging(false);
dragItem.current = null;
};
const handledragover =(e: React.DragEvent<HTMLTableHeaderCellElement>,colname: string) =>
{
e.preventDefault()
}
如果要进行任何更改,请告诉我
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)