React+ant design 实现右键菜单 Tree 配合 Dropdown

本文介绍如何使用React结合Ant Design的Tree组件与Dropdown组件来实现一个具有右键菜单功能的目录树。通过自定义目录树节点,使得每个节点都能响应右键点击事件并展示下拉菜单,提供查看和删除等操作。

React+ant design 实现右键菜单

需求:页面内部创建一个左侧目录树,并实现右键菜单功能经过对比,决定使用 Tree 创建目录树,Dropdown 实现菜单功能虽然 Tree 有 onRightClick 方法可以进行右键菜单的设置,但是右键之后的处理觉得麻烦

发现 Dropdown 也可以右键触发,于是想通过自定义Tree 目录树的节点进行实现,这样每一个节点都是一个通过右键触发的下拉菜单,于是便达到了简便右键菜单的功能

具体代码

import React from 'react'
const QueryPage: React.FC = () => {

		{/* 目录列表 */ }
		const [indexList, setIndexList] = useState<any>([])
		{/* 右键选中的项* /}
    const [indexRight, setIndexRight] = useState<any>()

		{/* 右键菜单 */}
		const indexMenu = (
        <Menu>
          <Menu.Item>查看</Menu.Item>
          <Menu.Item>删除</Menu.Item>
        </Menu>
    );

		{/* 目录树 */}
		const indexTreeNodeData = indexList?.map((i:any)=>{
        return {
            title: <Dropdown overlay={indexMenu} trigger={['contextMenu']} onVisibleChange={()=>{
                setIndexRight(i)
            }}>
                <div>{i?.name}</div>
            </Dropdown>,
            key: i,
        }
    });
		return <>
				<PageContainer header={{title:''}}>
					<ProCard>
							<Tree
			          checkable={true}
			          onCheck={onIndexCheck}
			          treeData={indexTreeNodeData}
			          />
					<ProCard>
				  {/* ...省略其它代码 */} 
				</PageContainer>
	</>
}
export default QueryPage;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值