Проблема в том, что метод popup - он у вас один на все экземпляры компонента. Отсюда и невозможность закрытия попапов сразу после открытия - метод просто не вызывается, таймаут ещё не окончился.
Чтобы работало так, как вы хотите, popup в каждом отдельном экземпляре должен быть уникальной функцией, т.е. в methods ему не место:
created() {
this.popup = _.throttle(function(state) {
this.show = ({
enter: true,
leave: false,
})[state];
}, 500, {
leading: false,
trailing: true,
});
},
Ну и как-то громоздко выглядит. Может ну их, эти enter/leave:
this.popup = _.throttle(show => this.show = !!show, 500, {
leading: false,
trailing: true,
});
<a href="#" @mouseenter="popup(1)" @mouseleave="popup(0)">
??