vue.js - 如何在 Vue 中创建自定义 lodash 油门事件修改器?
问题描述
在 VueJS 中,有事件修饰符click
和key
事件,允许诸如click.prevent
, click.once
, key.up
.
如何创建自定义事件修饰符?
更具体地说,如何创建一个mousemove.throttle
事件修饰符,以便每当我将该修饰符添加到事件时都可以应用 lodash 节流?
解决方案
一种选择是创建一个类似于这个的自定义指令
Vue.directive('throttled-on', {
bind(el, binding, vnode) {
const handler = throttle(1000, binding.value)
let type = binding.arg
el.addEventListener(type, handler)
}
})
var app = new Vue({
el: '#app',
methods: {
myMethod() { console.log('Called') }
}
})
<script src="https://cdn.jsdelivr.net/npm/throttle-debounce@2.1.0/dist/index.cjs.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div >
<div
id="app"
style="width: 100px; height: 100px; background: red;"
v-throttled-on:mousemove="myMethod"
/>
</div>
推荐阅读
- reactjs - 确保路径由变量定义的嵌套字段在添加到依赖数组时触发 React.useMemo 更新
- php - 如何防止 Wordpress 在标签中取消注释 php?
- python - 如何切割更大的矩阵并匹配更小的矩阵的形状
- ios - 格式 yyyy-MM-dd'T'HH:mm:ss.SSSZ swift 不起作用
- python - 错误 - pip 版本 19.1.1,但版本 20.2.4 可用 - 在 Docker 映像创建期间
- c - C中的用户输入和动态内存分配
- oracle - Oracle 可以在单个查询中选择更新的行吗?
- algorithm - 多个推销员遍历所有节点的最短路径算法
- javascript - 如何从 Web Audio API getByteFrequencyData 获取累积频率数据?
- c# - C# keybd_event 和 mouse_event 占用过多 CPU