reactjs - 可拖动的材质 UI 选项卡
问题描述
我正在寻找一种能够拖放 Material UI 选项卡的解决方案,该选项卡会更改它们在选项卡中的顺序,就像您可以通过将多个选项卡拖放到不同位置来打开多个选项卡时在浏览器中更改选项卡顺序一样。我在网上没有看到太多关于材料 ui 选项卡的细节。好奇在我去尝试重新发明轮子之前是否有人有解决方案。
解决方案
Material UI Tab API没有选项卡和选项drag
卡drop
。但是您可以使用HTML 拖放 API开发此功能:
这是一个基本示例:
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
const data = ev.dataTransfer.getData("text");
const tabList = ev.target.closest("div[role='tablist']");
let node = ev.target.getAttribute("role") === "tab" ? ev.target : ev.target.closest('[role="tab"]');
tabList.insertBefore(document.getElementById(data), node.nextSibling);
}
return (<Tabs
value={value}
onChange={handleChange}
aria-label="simple tabs example"
>
<Tab
label="Item One"
onDrop={drop}
onDragOver={allowDrop}
draggable="true"
onDragStart={drag}
/>
...
</Tabs>)
推荐阅读
- mysql - 在 MYSQL 中分组之前尝试 SUM() 列值
- python - Pygame背景未加载
- xcode - 如何将电容器白名单插件添加到离子应用程序
- php - 使用 CURLOPT_HTTPHEADER AccessKey 保护 php 页面
- python - 使用 Dash 的简单问题,如何显示变量的更新输出?
- linux - 列出 Linux 中的用户
- python - ModuleNotFoundError:没有名为“python”的模块
- azure-data-factory-2 - Azure 数据工厂是否支持 EBCDIC 文件?
- vimeo - 保持 Vimeo 控制栏嵌入,但将时间码更改为显示 0:00 开始?
- javascript - 如何让 addEventListener 点击条件与 hbs 中的单选按钮一起工作