1. 问题背景
在开发 Odoo 的菜单系统时,遇到了一个典型的状态管理问题。系统需要实现一个多级菜单,当用户悬停在主菜单项上时,显示一个 popover 子菜单面板。主要需求是:
-
鼠标悬停时显示子菜单面板
-
可以将鼠标移动到子菜单面板上进行操作
-
从一个菜单项移动到另一个菜单项时,之前的面板需要关闭
2. 初始实现及问题
最初的实现如下:
export class ArcoSubMenuItem extends Component {
setup() {
this.menuService = useService("menu");
this.state = useState({
activeMenu: null,
allowClose: true,
});
this.popover = usePopover(ArcoMenuPanel, {
pos