当前位置: 首页 > wzjs >正文

招聘网站销售怎么做广告接单有什么平台

招聘网站销售怎么做,广告接单有什么平台,建设手机网站多少钱,上海 餐饮网站建设React vs Vue:点击外部事件处理的对比与实现 在 Web 应用中,“点击外部事件监听”是一种常见需求,典型应用如:点击弹窗外部关闭弹窗、点击下拉菜单外关闭菜单。虽然在 React 和 Vue 中实现的原理类似——都是通过监听 document 的…

React vs Vue:点击外部事件处理的对比与实现

在 Web 应用中,“点击外部事件监听”是一种常见需求,典型应用如:点击弹窗外部关闭弹窗、点击下拉菜单外关闭菜单。虽然在 React 和 Vue 中实现的原理类似——都是通过监听 document 的点击事件并判断点击是否在目标元素外,但在两者框架中的编码方式和理念却有所不同。


📦 原理一致:判断是否点击在目标元素外

无论使用 Vue 还是 React,核心逻辑都是:

function isClickOutside(el: HTMLElement, target: EventTarget | null) {return el && target && !el.contains(target as Node)
}

这段逻辑判断点击的目标是否在 el 外部。


🔷 React 实现方式:使用 Hook

React 倾向于函数式和组合式思维,处理副作用的方式是通过 useEffect() 来注册和销毁事件。

import { useEffect, RefObject } from 'react'export function useClickOutside(ref: RefObject<HTMLElement>, handler: (e: MouseEvent) => void) {useEffect(() => {const listener = (e: MouseEvent) => {if (!ref.current || !isClickOutside(ref.current, e.target)) returnhandler(e)}document.addEventListener('mousedown', listener)return () => document.removeEventListener('mousedown', listener)}, [ref, handler])
}

使用方式

const ref = useRef(null)
useClickOutside(ref, () => console.log('clicked outside'))
  • ✅ 基于组件级 Hook
  • ✅ 支持函数依赖管理
  • ✅ 可按需组合并复用

🔶 Vue 实现方式:组合式 API + 自定义指令

Vue 提供两种实现路径:组合式 API(Composition API)和自定义指令(Directives)。

方法一:组合式 API

import { onMounted, onBeforeUnmount } from 'vue'export function useClickOutsideVue(elGetter: () => HTMLElement | null, handler: (e: MouseEvent) => void) {const listener = (e: MouseEvent) => {const el = elGetter()if (!el || !isClickOutside(el, e.target)) returnhandler(e)}onMounted(() => document.addEventListener('click', listener))onBeforeUnmount(() => document.removeEventListener('click', listener))
}

方法二:自定义指令

export const vClickOutside = {mounted(el: HTMLElement, binding: any) {el.__ClickOutside__ = (e: MouseEvent) => {if (isClickOutside(el, e.target)) {binding.value(e)}}document.addEventListener('click', el.__ClickOutside__)},unmounted(el: HTMLElement) {document.removeEventListener('click', el.__ClickOutside__)}
}

使用方式

<template><div v-click-outside="onClose">弹窗</div>
</template>
  • ✅ 更贴合模板语法
  • ✅ 易于在 UI 层应用
  • ✅ 可复用在多个 DOM 元素上

🔍 对比总结

对比项ReactVue
使用方式Hook(函数式组合)Composition API / 指令
生命周期处理useEffect 管理副作用onMounted / onBeforeUnmount
可读性适合开发者组织逻辑更贴近模板,写法语义直观
复用性Hook 可组合指令可复用在多个模板元素上
构建风格以 JS 逻辑为中心以模板交互为中心

✅ 最佳实践建议

项目类型推荐实现方式
React 应用useClickOutside hook
Vue3 + 组合式项目useClickOutsideVue hook
Vue2 / 模板为主项目v-click-outside 指令

通过合理封装点击外部事件监听逻辑,可以在保持代码整洁的同时,提升组件交互体验与可维护性。

http://www.dtcms.com/wzjs/390603.html

相关文章:

  • 网站注册表单怎么做网站外包一般多少钱啊
  • 石家庄网站建设案例西安关键词排名提升
  • 闵行网站开发软文范例大全300字
  • 成都网站建设推来客网站系统搜索引擎app
  • 信息技术九年级上册网站咋做营销广告文案
  • 一个页面的网站如何宣传网站
  • 建设工程类的网站合肥seo服务商
  • 烟台高端网站建设公司哪家好石家庄最新消息今天
  • 网站开发ppt模板进行网络推广
  • 电脑网页打不开怎么回事seo的工作内容
  • 网站建设哪里有国内最新新闻
  • 网站文章后台写完前台不显示电子商务seo实训总结
  • 中国有哪些网站百度联系电话
  • 建站最好的公司排名重庆网站推广联系方式
  • 网站营销网站优化微信推广费用一般多少
  • 校园网站的建设作用今晚比赛预测比分
  • 甘肃建设投资集团控股有限网站产品推广策划
  • 网站用户注册页面怎么做成人再就业培训班
  • 广州网站建设c2c销售怎么找客户源
  • 做ppt图表的网站贵州萝岗seo整站优化
  • 云南省建设厅建管处网站百度搜一下
  • 湖南建筑信息网湖南建设人力资源seo销售好做吗
  • 怎么搭建一个网站百度度小店申请入口
  • 黄山建设厅官方网站短视频推广公司
  • 公司门户网站什么意思关键词如何快速排名
  • 大连仟亿科技网站建设公司怎么样南通关键词优化平台
  • 织梦网站首页怎么修改日本搜索引擎naver入口
  • 外贸原单童装哪个网站做百度高级搜索指令
  • 寻找哈尔滨网站建设青岛seo精灵
  • 石河子做网站考拉seo