经常需要给某个元素同时绑定点击和回车事件:
<div
class="custom-button"
@click="handler"
@keypress.enter="handler"
tabindex="0"
>click me</div>
能不能封装起来?
如果通过自定义指令实现,TypeScript / Volar 支持会不会不太好?
补充说明:
custom-button
只是一个举例,因此仅仅封装<CustomButton />
不是我需要的解决方案- 封装更泛化的组件比如
<Enterable />
语义上不太符合直觉 指令在 Volar 中可以拿到类型提示,但有一些问题:
- 不知道为什么指令名本身不能补全
- 自定义指令
v-click-enter
不能享受v-on
中直接写表达式的便利
如v-click-enter="addItem(value)"
是不行的,要写v-click-enter="() => addItem(value)"
- 我印象中 Vue 2 可以自定义新的全局事件,但是 Vue 3 似乎不再支持了,大家有没有相关的资料呢?
用插槽呀, 需要绑定的组件传进来
