30 VueComponent 事件的绑定
前言
这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章
主要记录的是 vue 的相关实现机制
呵呵 理解本文需要 vue 的使用基础, js 的使用基础
测试用例
用例如下, 我们这里核心关注 事件的处理流程
问题的调试
整个事件的处理是 dom -> ElButton -> VueComponent.emit -> HelloWorld.handleClick
从面向对象的角度上面来看, ElButton.handleClick 是一个模板方法, 一部分固定的组件本身的业务处理, 一部分留给使用实例的地方来进行处理
ElButton 接管的是点击之后的所有业务, 他会做一些 ElButton 点击之后的自己需要处理的一部分业务, 然后还会 emit 一个 click 事件, 这个事件的处理是 留给具体的组件实例来关注的 [比如 HelloWorld 中的 el-button 就是一个组件实例]
我们这里从 dom基层 往上看
真实的再 dom 上面绑定事件 是在这里绑定, 这里封装了一层 function
这里面调用的传入的 handler, 传入的 handler 为一个 invoker, invoker 里面对应的是 el-button 的 handler 绑定的事件
这里就是上面的 dom -> ElButton 的这步转换
传入的函数为, 这里就是上面的 ElButton -> VueComponent.emit 的这步转换
绑定 dom 事件这里, 是在创建 dom 元素的时候, 有一系列创建的时候调用的钩子
这里 updateDOMListeners 中根据当前 VNode 来更新所有的 dom 的事件处理函数
这一这里有一层 createFnInvoker 的包装处理, 因此 回调函数是 invoker, 然后 invoker 再去调用的 handleClick
然后 VueComponent 的 事件处理器 到 VNode 的事件处理器 的转换是在组件对应的 render 函数
这部分就是 Vue 本身的事件处理相关
从注册的 事件处理表 中获取 click 对应的回调列表, 然后 依次调用
这里的 vm._events[‘click’] 对应的函数是 封装了一层 invoker 之后的 HelloWorld.handleClick
这里就是上面的 VueComponent.emit -> HelloWorld.handleClick 的这步转换
然后这个 ElButton 对应的 VueComponent 实例初始化的地方如下, initEvents 的地方会注册相关事件
初始化 Vue 组件的时候 注册 listener
这个可以再 VueComponent 的对象的 _events 上面查看, 这里注册的是 VueComponent 的事件管理
完
相关文章:

30 VueComponent 事件的绑定
前言 这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章 主要记录的是 vue 的相关实现机制 呵呵 理解本文需要 vue 的使用基础, js 的使用基础 测试用例 用例如下, 我们这里核心关注 事件的处理流程 问题的调试 整个…...

作用域及作用域链
作用域 隔离变量的集合 作用域最大的用处就是隔离变量,不同作用域内的同名变量不会有命名冲突。 作用域类型 全局作用域,函数作用域和块级作用域。 1)全局作用域,在整个代码文件中都可以访问的作用域。 2)函数作用域…...

深入解析Linux C/C++ 编程中的内存泄漏问题
深入解析Linux C/C 编程中的内存泄漏问题 I. 前言 (Introduction)1.1 文章目的与内容概述 (Purpose and Overview of the Content)1.2 重要性和实用性的说明 (Significance and Practicality Explanation)1.3 数据结构与内存泄漏的基本概念 (Basic Concepts of Data Structure …...

【爬虫第三章】 Python基础
预计更新一、 爬虫技术概述 1.1 什么是爬虫技术 1.2 爬虫技术的应用领域 1.3 爬虫技术的工作原理 二、 网络协议和HTTP协议 2.1 网络协议概述 2.2 HTTP协议介绍 2.3 HTTP请求和响应 三、 Python基础 3.1 Python语言概述 3.2 Python的基本数据类型 3.3 Python的流程控制语句 3…...

电力系统的虚假数据注入攻击和MTD系统研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

【阿里云】阿里云OSS对象存储— 开通OSS服务、搭建OSS环境、快速入门
目录 一、开通OSS服务 二、搭建OSS环境 1、创建Bucket存储空间 2. 创建文件夹上传图片 3. RAM 访问控制 三、快速入门 1.下载SDK 2.创建存储空间[可选] 3.上传图片 一、开通OSS服务 二、搭建OSS环境 1、创建Bucket存储空间 选择 Bucket列表,进行Bucket创建…...

代理对象Proxy是什么
Proxy是ES6(ECMAScript 2015)引入的一个特性,它是一种用于创建代理对象的构造函数。代理对象可以用来拦截并自定义对目标对象的操作。 通过使用Proxy,您可以在目标对象上设置各种拦截器(称为"陷阱"…...

会话跟踪cookie和session
什么是会话跟踪技术 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可能包含多次请求和响应。 会话跟踪:一种维护浏览器状态的方法,服务器需…...

ACS Cent. Sci 2018 | 数据驱动的分子连续表征的自动化学设计
原文标题:Automatic Chemical Design Using a Data-Driven Continuous Representation of Molecules 代码:https://github.com/aspuru-guzik-group/chemical_vae 原文链接:https://pubs.acs.org/doi/10.1021/acscentsci.7b00572 Automatic…...

安卓Termux搭建web服务器【公网远程手机Android服务器】
文章目录 概述1.搭建apache2.安装cpolar内网穿透3.公网访问配置4.固定公网地址5.添加站点 概述 Termux是一个Android终端仿真应用程序,用于在 Android 手机上搭建一个完整的Linux 环境,能够实现Linux下的许多基本操作,不需要root权限Termux就…...

【大数据之Hive】二、Hive安装
Hive安装部署(最小化部署) 安装部署Hive(最小化只用于本机测试环境中,不可用于生产环境),并运行。 步骤: (1)把apache-hive-3.1.3-bin.tar.gz解压到/opt/module/目录下&…...

三大特性之多态
文章目录 静态的多态动态的多态虚函数虚函数的重写(覆盖)利用虚函数重写实现多态重写的两个例外1.协变2.析构函数的函数名不同 C11的override和final 重载,重写(覆盖),重定义(隐藏)抽…...

单调队列优化dp
文章目录 单调队列优化dp烽火传递修剪草坪绿色通道琪露诺旅行问题Watching Fireworks is Fun瑰丽华尔兹股票交易 单调队列优化dp 文章首发于我的个人博客:欢迎大佬们来逛逛 单调队列优化dp的建模形式:这是窗口右滑动的情况 对于窗口左滑动的也是同理。…...

【低压配电漏电继电器660V/LLJ-100H/AC220V 中性点漏电保护 JOSEF】
LLJ-F(S)系列漏电继电器 系列型号: LLJ-10F(S)漏电继电器LLJ-15F(S)漏电继电器LLJ-16F(S)漏电继电器 LLJ-25F(S)漏电继电器LLJ-30F(S)漏电继电器LLJ-32F(S)漏电继电器 LLJ-60F(S)漏电继电器LLJ-63F(S)漏电继电器LLJ-80F(S)漏电继电器 LLJ-100F(S)漏电继电器LLJ-120…...

[数据结构习题]栈——中心对称链
[数据结构习题]栈——中心对称链 👉知识点导航💎:【数据结构】栈和队列 👉[王道数据结构]习题导航💎: p a g e 70.4 page70.4 page70.4 本节为栈和链表综合练习题 题目描述: 🎇思路…...

AMD Software Adrenalin Edition 23.5.1驱动发布,快速获取驱动
AMD新驱动赶在五月天发布!AMD Software Adrenalin Edition 23.5.1驱动 ,为部分游戏带来支持,以及为重要的软件带来修复。驱动人生带大家一览AMD WHQL 23.5.1驱动的优化内容。 游戏方面,AMD WHQL 23.5.1主要为游戏《指环王&#x…...

Visual Studio内引用Lua解释器,编译Lua源码,执行Lua脚本
前言 本篇在讲什么 在Visual Studio中引入lua的解释器 使用C调用Lua文件 本篇适合什么 适合初学Lua的小白 适合需要C/C和lua结合开发的人 本篇需要什么 对Lua语法有简单认知 对C/C语法有简单认知 依赖Lua5.1的环境 依赖VS 2017编辑器 本篇的特色 具有全流程的图文…...

【赏】C语言迷宫游戏设计如何解决屏幕严重刷屏问题同时实现运行时间的显示
要解决屏幕严重刷屏问题,可以参考以下方法: 在每次刷新前清空屏幕,使用system("cls")命令来实现清屏。 只在需要更新的地方进行刷新,而不是整个屏幕都重新绘制。在此代码中,只需要在用户输入移动指令后更新电子鼠的位置即可,不用每次循环都重新画整个迷宫。同时…...

Spring Boot如何实现接口文档自动生成
Spring Boot如何实现接口文档自动生成 在开发Web应用程序时,接口文档是非常重要的一环,它可以帮助我们快速了解API的功能和使用方法,同时也是与其他开发人员和团队协作的重要工具。然而,手动编写和维护接口文档是一项繁琐的工作&…...

二进制概述-0day漏洞利用原理(1)
二进制利用基本原理,Lord PE的使用,凡是资源性的物质且可表达的皆可利用。 往期文章: 漏洞概述-0day漏洞利用原理(0)_luozhonghua2000的博客-CSDN博客 PE 文件格式 PE (Portable Exec utable) 是 Win32 平台下可执行文件遵守的数据格式。常见的可执行文件(如“*.exe”文件…...

加密与解密 调试篇 动态调试技术 (二)-常见断点
目录 常见的断点 1.INT 3 断点 检测 绕过 2.硬件断点 原理 我们给出硬件中断的例子 删除硬件断点 3.内存断点 原理 例子 删除 区别 总结 4.内存访问一次性断点 5.消息断点 例子 删除 6.条件断点 (1)按寄存器条件中断 (2&…...

【JavaScript】拾遗(5.25)
文章目录 1. JavaScript2.HTML嵌入JS的第一种方式:行间事件3.HTML嵌入JS的第二种方式:脚本块的方式4. HTML嵌入JS的第三种方式:外部式(外链式)5. 局部变量和全局变量6. 函数7.事件8.回调函数8.1 注册事件8.2 代码的执行顺序 1. JavaScript JavaScript是一门脚本语言。…...

QMI8658 - 姿态传感器学习笔记 - Ⅲ
文章目录 1.复位1.1 上电复位:1.2 推荐工作条件 2. 校准(COD)2.1 校准步骤2.2 校准注意事项:2.3 校准状态指示2.4 校准参数更新 3. 自检3.1 加速度计自检3.2 陀螺仪自检 4. Ctrl94.1 写Ctrl94.2 读Ctrl94.3 Ctrl9详细命令说明 5. 中断5.1 同步采样模式5.…...

PHP+vue二手车交易信息网站系统
原来二手车网站由于二手车网站制度的不完善,许多城市的二手车网站市场都很少,而且欺诈行文较严重,肆意提高价格,隐瞒汽车所存在的故障问题,人们买卖二手车还是经过朋友帮忙介绍的途径来实现。这就导致了很多人的想卖车…...

NTM中attr的用法
代码1 attrs class CopyTaskParams(object):name attrib(default"copy-task")controller_size attrib(default100, convertint)controller_layers attrib(default1,convertint)num_heads attrib(default1, convertint)sequence_width attrib(default8, convert…...

【python资料】pandas的条件查询
一、说明 在使用Pandas的DataFrame进行数据挖掘的时候,需要形形色色的条件查询,但是这些查询的基本语法是啥,查询的灵活性如何,本文将对他们进行详细列出,便于以后查阅。 二、Pandas条件查询方法 2.1 简单条件查询 1、…...

中间件(三)- Kafka(二)
Kafka 6. 高效读写&Zookeeper作用6.1 Kafka的高效读写6.2 Kafka中zookeeper的作用 7. 事务7.1 Producer事务7.2 Consumer事务 8. API生产者流程9. 通过python调用kafka9.1 安装插件9.2 生产者(Producer)与消费者(Consumer)9.3…...

DAY01_MySQL基础数据类型navicat使用DDL\DML\DQL语句练习
目录 1 数据库相关概念1.1 数据库1.2 数据库管理系统1.3 常见的数据库管理系统1.4 SQL 2 MySQL2.1 MySQL安装2.1.1 安装步骤 2.2 MySQL配置2.2.1 添加环境变量2.2.2 MySQL登录2.2.3 退出MySQL 2.3 MySQL数据模型2.4 MySQL目录结构2.5 MySQL一些命令2.5.1 修改默认账户密码2.5.2…...

数据安全复合治理框架和模型解读(0)
数据治理,数据安全治理行业在发展,在实践,所以很多东西是实践出来的,哪有什么神仙理论指导,即使有也是一家之说,但为了提高企业投产比,必要的认知是必须的,当前和未来更需要专业和创新。数据安全治理要充分考虑现实数据场景,强化业务安全与数据安全治理,统一来治理,…...

Java程序设计入门教程--逻辑运算符和位运算符
目录 逻辑运算符 位运算符 逻辑运算符 逻辑运算符就是表示逻辑关系的运算符。下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假。 逻辑运算符表 操作符 描述 例子 && 当且仅当两个操作数都为真,条件才为真。 &…...