antd Tree组件中,自定义右键菜单

最近项目中,有一个需求是自定义antd的Tree组件的右键菜单功能。

直接上代码

class Demo extends Component {
  state = {
    rightClickNodeTreeItem: {
      pageX: "",
      pageY: "",
      id: "",
      categoryName: ""
    }
  }

  // tree列表上右键事件
  onRightClick = e => {
    this.setState({
      rightClickNodeTreeItem: {
        pageX: e.event.pageX,
        pageY: e.event.pageY,
        id: e.node.props["data-key"],
        categoryName: e.node.props["data-title"]
      }
    });
  };

  // 自定义右键菜单内容

   getNodeTreeRightClickMenu = () => {
    const { pageX, pageY, id, categoryName } = { ...this.state.rightClickNodeTreeItem };
    const tmpStyle = {
      position: "absolute",
      left: `${pageX - 220}px`,
      top: `${pageY - 102}px`
    };
    const menu = (
      <div style={tmpStyle} className="self-right-menu">
        <a onClick={this.addDownGroup.bind(this, id)}>新增下级部门</a>
        <a onClick={this.editGroup.bind(this, id, categoryName)}>修改</a>
        <a>删除目录</a>
      </div>
    );
    return this.state.rightClickNodeTreeItem == null ? "" : menu;
  };

  render(){
   return (
     ...
      {this.getNodeTreeRightClickMenu()}
     ...
   )
  }

}

export default Demo;

转载于:https://www.cnblogs.com/zhouyangla/p/9795998.html

在Vue3使用Antd Tree组件时,使用`expandedKeys`属性来控制展开或折叠节点时,需要注意以下几点: 1. `expandedKeys`是一个双向绑定的属性,需要使用`.sync`修饰符来实现双向绑定。 2. 收起节点时,需要在`onExpand`事件更新`expandedKeys`数组的值,同时需要使用`.sync`修饰符将更新后的`expandedKeys`数组传递给Tree组件的`expandedKeys`属性。 以下是一个示例代码段,用于收起key为`node1`的节点: ``` <template> <a-tree :expanded-keys.sync="expandedKeys" :on-expand="handleExpand"> <a-tree-node key="node1" title="Node 1"> <a-tree-node key="node1-1" title="Node 1-1"></a-tree-node> <a-tree-node key="node1-2" title="Node 1-2"></a-tree-node> </a-tree-node> <a-tree-node key="node2" title="Node 2"></a-tree-node> </a-tree> </template> <script> import { defineComponent, reactive } from 'vue'; export default defineComponent({ setup() { const state = reactive({ expandedKeys: ['node1'], }); const handleExpand = (expandedKeys) => { state.expandedKeys = expandedKeys; }; return { ...state, handleExpand, }; }, }); </script> ``` 在上面的代码,我们使用了Vue3的响应式数据(reactive)来定义了一个名为`state`的状态对象,其包含了一个名为`expandedKeys`的数组,用于控制树的展开状态。我们将`expandedKeys`数组传递给Tree组件的`expanded-keys`属性,并使用`.sync`修饰符实现双向绑定。在`on-expand`事件,我们更新了`expandedKeys`数组的值,并使用`.sync`修饰符将更新后的`expandedKeys`数组传递给Tree组件的`expanded-keys`属性。 当我们点击节点时,会触发`on-expand`事件,并在事件处理函数更新`expandedKeys`数组的值。如果该节点的key已经在`expandedKeys`数组,我们就从该数组移除该节点的key,从而收起该节点。如果该节点的key不在`expandedKeys`数组,我们就将该节点的key添加到`expandedKeys`数组,从而展开该节点。最后,我们将更新后的`expandedKeys`数组传递给Tree组件的`expanded-keys`属性,实现双向绑定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值