import { on, off } from '@/utils/domUtils' const clickOutside = { mounted(el, binding) { function eventHandler(e) { // 对el和binding进行处理,判断是否触发value函数 } el.__click_outside__ = eventHandler on(document, 'click', eventHandler) }, beforeUnmount(el) { if(typeof el.__c...
本文总结了vue3下ClickOutside的实现逻辑,从工具函数封装,到自定义指令的学习,再到源码的深入学习;虽然ClickOutside的整体逻辑并不是很复杂,但是刚开始笔者阅读源码的时候,很难理解其中的一些用法;尤其是在事件的注册,为什么不用click,而是使用mouseup/mousedown两个事件组合;经过深入的思考和对比,才慢慢理解作者的用意。
1、从elemtn-plus中导入ClickOutside指令 import { ClickOutside as vClickOutside } from 'element-plus' 2、从元素上绑定对应的指令 v-click-outside= "onClickOutside" 3、onClickOutside绑定对应的方法 vue2.0 1、导入指令 import { ClickOutside } from 'element-plus' 2、映射该指令 directives:{ Cl...
<slot name="reference"></slot> </template> </el-popover> </template> import {defineComponent} from 'vue'; import {ClickOutside} from 'element-plus/lib/directives'; // 定义属性 export const contextMenuDefaultProps = { visible: { type: Boolean, default: false, }, placement: { type:...
利用vueuse/core里的onClickOutside,判断点击是否是外部组件,来帮助我们关闭弹层。 终端中执行yarn add @vueuse/core@5.3.0,这里安装指定版本,各位按需选择。 二.代码实现 1.封装 将其封装为局部组件,文件放在src/libs目录下,新建city.vue组件。 代码如下(示例): ...
import { onClickOutside } from '@vueuse/core' import type { RenderableComponent } from '../types' import type { OnClickOutsideOptions } from '.' export interface OnClickOutsideProps extends RenderableComponent { options?: OnClickOutsideOptions ...
const onClickOutside = () => { active.value = false }, },2. VueUse 插件地址:https://vueuse.org/ VueUse 提供了 200+ 个基本实用程序函数的集合,用于与浏览器、状态、网络、动画、时间等各种 API 进行交互,这些函数可以轻松导入并在 Vue.js 组件中使用。因此,无需编写太多代码就可以添加访问本...
<template><el-icon><ArrowDownBold/></el-icon><el-popoverref="popoverRef"trigger="hover"virtual-triggering:virtual-ref="buttonRef">刷新关闭其他关闭左侧关闭右侧</el-popover></template>
onClickOutside 是vue的方法库提供的方法,直接下载使用即可 怎么用: // 1. 导入方法import { onClickOutside } from '@vueuse/core'setup() {// 鼠标在目标之外点击,就会执行回调onClickOutside(监听的目标, (e) => {// 鼠标在目标之外点击,要做什么?})} ...
处理程序应该是一个函数,那么它的类型应该是从@vueuse/core导入的OnClickOutsideHandler ...