钩子(hook)函数就是处理拦截在软件组件之间传递的函数调用或事件或消息的代码,本质上就是用以处理系统消息的程序,通过系统调用,把它挂入系统中

什么是钩子(hook)函数

在计算机编程中,钩子函数主要用于通过拦截在软件组件之间传递的函数调用或消息或事件来改变或增强操作系统,应用程序或其他软件组件的行为。处理这种截获的函数调用,事件或消息的代码称为钩子,它的本质就是用以处理系统消息的程序,通过系统调用,把它挂入系统。钩子函数可用于许多目的,包括调试和扩展功能。常见的钩子函数:react的生命周期函数、vue的生命周期函数等

React Hooks的含义

React Hooks用于从函数组件连接到React状态和生命周期功能的简单函数

这意味着钩子允许我们轻松地操作我们的函数组件的状态,而无需将它们转换为类组件。这使我们不必处理所涉及的所有样板代码。

钩子在类内部不起作用,它们允许你在没有类的情况下使用React。而且,通过使用它们,我们可以完全避免使用生命周期方法,例如componentDidMount,componentDidUpdate等。相反,我们将使用内置的钩子,如useEffect,useMutationEffect或useLayoutEffect。

钩子是简单的JavaScript函数,但它们强加了两个额外的规则

(1)只在最顶层调用Hooks 。不要在循环,条件或嵌套函数中调用Hook

(2)仅从React功能组件调用Hooks 。不要从常规JavaScript函数调用Hook。还有另外一个有效的地方可以调用自定义Hooks。

我们需要记住在React 函数组件的上下文中,以前这些组件被称为无状态,但现在钩子为我们提供了在这些组件中使用状态的方法

Vuejs Hook的含义

Vuejs中的一个组件有一个生命周期,当它创建组件时,由Vue自己管理,将组件安装到DOM,更新组件并销毁组件。也就是每个组件都有自己的生命周期事件,我们可以通过实现一个或多个生命周期钩子来关注该生命周期中的关键时刻,这些钩子由Vue自己调用,从而为我们提供帮助有机会在组件生命周期的特定阶段添加我们自己的代码。

Vue有八个生命周期钩子,记住它们的关键是知道它们中的四个是被触发的事件,表明实际事件将发生。它们以实际钩子之前的“之前”开始,并在实际钩子之前被触发。

Vue的八个生命周期钩子

(1)beforeCreate: 这是在初始化Vue实例后调用的第一个钩子。在这个阶段,尚未建立数据观察事件,计算属性和观察者。因此,我们无法与组件的任何部分进行交互。

(2)created:在创建实例后调用此钩子,在这个阶段,实例已经完成处理,数据观察,计算属性,方法,观察者和事件回调已经建立。在此阶段无法与DOM交互,因为尚未安装组件

(3)beforeMount :在此阶段,模板可以从模板或渲染选项中编译,也可以从Vue初始化为的元素的outerHTML编译。模板尚未呈现,需要注意服务器端呈现期间不会调用此钩子函数

(4)mounted :在安装实例后调用,其中el属性由新创建的vm。$ el替换。如果将根实例挂载到文档内元素,则在调用挂载时,vm $el也将在文档中。调用挂接的挂钩后,组件将完全正常工作,我们可以完全与之交互。

需要注意的一点是钩子函数不能保证元素已添加到DOM中。要在此阶段执行DOM依赖的代码,需要将代码置于回调方法中,并将其置于Vue.nextTick()函数中。例

I'm text inside the component.

export default {

mounted() {

// Element might not have been added to the DOM yet

this.$nextTick(() => {

// Element has been definitely added to the DOM

console.log(this.$el.textContent); // I'm text inside the component.

}

}

}

(5)beforeUpdate:在修补DOM之前,可以随时更改我们的数据,并且需要更新DOM。注意在服务器端呈现期间不会调用此钩子函数,因为只在服务器端执行初始呈现。

(6)updated:在更改完成后触发钩子函数。调用此函数时,组件的DOM会更新,因此可以在此处执行与DOM相关的操作。但是,在大多数情况下,应该避免更改钩子内的状态。通常最好使用计算属性或观察者。

需要注意的是更新并不能保证所有的子组件也进行了重新呈现。如果想等到整个视图被重新渲染,你可以在更新的内部使用vm,$el

(7)beforeDestroy:在销毁Vue实例之前调用。在此阶段,实例仍然完全正常运行。可以在此处执行必要的清理。请注意,在服务器端呈现期间不会调用此挂接。

(8)Destroyed:在Vue实例被销毁后调用。调用此函数时,Vue实例的所有指令都已解除绑定,所有事件侦听器都已删除,并且所有子Vue实例也已被销毁。请注意,在服务器端呈现期间不会调用此挂接。

总结:以上就是有关于钩子函数的介绍,希望对大家有所帮助

php 钩子函数,钩子函数是什么相关推荐

  1. C语言回调函数 钩子函数,回调函数和钩子函数的说明

    回调函数:数据结构 回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,通常用于截获消息.获取系统信息或处理异步事件.应用程序把回调函数的地址指针告诉DLL,而DLL在适当的时候会 ...

  2. elementUi——组件函数钩子自带参数,不能添加参数问题

    在element-ui中的组件函数钩子一般都是自带参数如: //上传组件 <el-uploadclass="upload-demo"action="https:// ...

  3. c语言中的钩子函数,回调函数以及钩子函数的概念

    钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统.每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权.这时钩子函数即可以加工处理(改变)该消息,也可 ...

  4. C语言回调函数 钩子函数,回调函数和钩子函数介绍

    编程分为两类:系统编程(system programming)和应用编程(application programming).所谓系统编程,简单来说,就是编写库:而应用编程就是利用写好的各种库来编写具某 ...

  5. mysql 钩子_回调函数和钩子函数的区别

    在消息处理机制中必不可少的一组CP,即回调和钩子. 钩子的概念源于Windows的消息处理机制,通过设置钩子,应用程序可以对所有的消息事件进行拦截,然后执行钩子函数,对消息进行想要的处理方式. 接下来 ...

  6. linux进程函数钩子,linux中钩子函数的理解

    看了一个回调函数,想再了解一下钩子函数,以下为在网络上查找的一些有用资料,记录一下: 钩子函数(回调函数)也是系统内核为驱动程序提供的一些特定的函数, 在驱动程序中某个变量的状态发生改变或将要改变或改 ...

  7. JavaScript中的钩子(钩子机制\钩子函数\hook)是什么?

    我的博客https://www.ideaopen.cn/ 首先,看到我们的标题: JavaScript中的钩子(钩子机制\钩子函数\hook) 是什么? 我们前端的JavaScript中,经常提到钩子 ...

  8. html 数据钩子,22.钩子函数.html

    Document crossorigin="anonymous"> 添加品牌 Id: Name: 搜索name关键字: IdNameCtimeOperation {{item ...

  9. 练习 进程钩子 全局钩子

    C++ 关于钩子的知识点博客网上基本写的都非常详细,这里只是简单分享一下本人练手的编程步骤和一些简单认识. 钩子程序就大概分成了2种: (1) 进程中的钩子:它 的作用范围只是限定在某个进程中,或者某 ...

  10. java hook全局钩子_钩子(hook)

    钩子(hook)编程 一.钩子介绍 1.1钩子的实现机制 钩子英文名叫Hook,是一种截获windows系统中某应用程序或者所有进程的消息的一种技术.下图是windows应用程序传递消息的过程: 如在 ...

最新文章

  1. UML-2-迭代、进化和敏捷
  2. mysql的分页怎么不对_mysql一对多关联查询分页错误问题的解决方法
  3. org.apache.shiro.ini不存在 shiro不能导包
  4. Netty实战 IM即时通讯系统(十二)构建客户端与服务端pipeline
  5. 北林oj-算法设计与分析-Tom palindrome number
  6. ObjectOutputStream 和 ObjectInputStream类的简单介绍,及运用。
  7. 初学python之列表
  8. 电商C4D素材,玩转立体作品不是问题
  9. onenote打开闪退平板_爆款教学小帮手——OneNote篇
  10. 软考(软件设计师)应该如何备考?
  11. Word排版技巧数模论文必备
  12. 结构体初始化为0的技巧!!
  13. Android Glide加载网络图片不显示,但浏览器能打开图片
  14. mysql show processlist整理
  15. 手机里的微信群,都在变成DAO
  16. 前端HTML CSS JavaScipt JQuery
  17. 强制删除文件 强制删除文件夹
  18. HiveSql一天一个小技巧:如何不使用union all 进行列转行
  19. 于神之怒加强版 [Bzoj 4407]
  20. ubuntu安装输入法----小企鹅输入法

热门文章

  1. Java项目:JSP在线奶茶店销售网站平台
  2. 中谷教育05 Python数据类型
  3. npm报错 npm ERR! Error while executing:
  4. user_jj两条记录改成一条
  5. 【第28期】游戏策划:996的解决方式是自我驱动
  6. python安装0x80072ee7_Win8系统无法打开应用商店且提示“服务器错误”及错误代码0x80072EE7的解决方法...
  7. 交管12123服务器维护,交管12123支付宝打不开解决方法
  8. KY-RTI分布仿真技术:附录3 国产化(操作系统+CPUs)
  9. 这迟来的回眸,18年的展望
  10. 单片机编程里offh什么意思_单片机内部数据储存地址中的00H 和0FH,FFH代表什么意思。。。F 和0是什么...