基于antd,实现Table支持右键弹出menu下载
实现效果

当前组件添加id,方式一页多个相同组件互相干扰
const tableId = useRef(Math.random()) ;
<Table
id={
tableId.current}
dataSource={
dataSource}
columns={
colums}
/>
获取组件,禁止鼠标右键默认事件,并增加menu
- 此处将 menu 挂在了最外层的组件 x-app 上,防止 menu 的位置偏差过大;
- table 渲染完毕后再进行渲染menu,否则 menu 会无法获取;
- 使用绝对定位确定 menu 出现的位置
useEffect(() => {
if( tablemenu && tablemenu.isDownload ){
const tableDIV = document.getElementById(tableId.current);
if(tableDIV){
tableDIV.oncontextmenu = function(e) {
e.preventDefault();
}
const xApp = document.getElementById('x-app');
const rightMenu = document.createElement('button');
tableDIV.onmouseup = function(e) {
e.stopPropagation()
if(e.button == 2){
mousexApp.oncontextmenu = function(e) {
e.