首页 > 其他分享 >hook:beforedestroy - 监听生命周期

hook:beforedestroy - 监听生命周期

时间:2023-07-05 10:48:19浏览次数:59  
标签:定时器 beforedestroy timer hook 组件 mounted 监听

vue中hook的两点使用

1. 在同一个组件中

例如:在mounted中添加一个监听需要在beforeDistroy中移除这个监听,考虑到某些原因你不想再写个beforeDistroy去实现,这时候绿巨人hook就该登场了

mounted () {
  window.addEventListener('online', this.handleOnline)
  this.$once('hook:beforeDestroy', function () {
    window.removeEventListener('online', this.handleOnline)
  })
},

就是你在任意地方用 this.$on/$once('hook:生命周期',callback),就可以监听到生命周期的变化了

2. 在父组件监听子组件的生命周期方法

如果你站在父组件里想在子组件的mounted方法里边做一些事情你会怎么办呢?

//父组件中这样写
<rl-child
  :value="40"
  @mounted="handleChildMounted"
/>
// 子组件中这样写
mounted () {
  this.$emit('mounted')
},

这样确实可以实现,那有没有更好的方式呢?绿巨人说有!!

//父组件中这样写
<rl-child
  :value="40"
  @hook:mounted="handleChildMounted"
/>
 
handleChildMounted() {
   console.log('父组件监听到 mounted 钩子函数 ...');
},
 
 
// 子组件中不用写东西
mounted () {
   console.log('子组件触发 mounted 钩子函数 ...');
},
// 以上输出顺序为:
// 子组件触发 mounted 钩子函数 ...
// 父组件监听到 mounted 钩子函数 ...  

这样就实现了!是不是还简洁一点呢?

你可能会说,好鸡肋啊,不用你浩克也都能实现啊?这不是脱裤子放屁么?

那如果:你用的是第三方的组件库,你需要在这个组件发生改变时候做一些操作,巧了这个组件还没有实现@change回调,你怎么获取呢,这个时候你转身发现hook真香唉!

vue中使用$.once(‘hook:beforeDestory’,() => {})清理定时器

在vue项目清理定时器,通常有两种方法

方法一:

1、首先在vue实例的data中定义定时器的名称,
2、在方法(methods)或者页面初始化(mounted())的时候使用定时器
3、然后在页面销毁的生命周期函数(beforeDestroy())中销毁定时器
实现代码:

export default{
  data(){
    timer:null  
  },
  mounted(){
	  this.timer = setInterval(()=>{
	  //具体执行内容
	  console.log('1');
	},1000);
  }
  beforeDestory(){
    clearInterval(this.timer);
    this.timer = null;
  }
}

注: 第一种方法存在的问题是:

1、vue实例中需要有这个定时器的实例,感觉有点多余;
2、创建的定时器代码和销毁定时器的代码没有放在一起,通常很容易忘记去清理这个定时器,不容易维护;*

因此,更推荐第二种方法,使用this.$once(‘hook:beforeDestory’,()=>{});

方法二:直接在需要定时器的方法或者生命周期函数中声明并销毁

实现代码:

export default{
  methods:{
    fun1(){
      const timer = setInterval(()=>{
      	//具体执行代码
        console.log('1');
      },1000);
      this.$once('hook:beforeDestory',()=>{
        clearInterval(timer);
        timer = null;
      })
    }
  }
}

转自:https://blog.csdn.net/muzidigbig/article/details/112700916

标签:定时器,beforedestroy,timer,hook,组件,mounted,监听
From: https://www.cnblogs.com/axingya/p/17527865.html

相关文章

  • 2023-07-04 如何处理vue中不能监听到父传子组件props的变化
    前言:父传值给子组件,子组件需要根据传进来的值进行watch监听props中的值并遍历插入一个值,然后同时子组件的页面会跟着渲染。问题就是:子组件无法拿到watch更新的props值,比如传进一个list,然后通过watch来监听并在list里面加入一个新的值,前端页面拿不到新的值故而报错。原因:watch无......
  • react的hooks作用讲解
    1.useState用于声明一个state变量,例子如下点击查看代码importReact,{useState}from'react';functionExample(){//声明一个叫"count"的state变量const[count,setCount]=useState(0);return(<div><p>Youclicked{count}......
  • redis监听过期key
    importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.data.redis.connection.RedisConnectionFactory;importorg.springframework.data.redis.listener.RedisMessageListenerConta......
  • React hooks
    什么是ReactHook?hook(钩子)是一种特殊的函数,它允许你“钩入”各种React特性。假设一个函数返回一个有两个值的数组:第一个值: 一个带有状态state的变量。第二个值: 一个带有处理程序handle(改变当前状态的函数)的变量。就是这样,很简单。......
  • react之自定义hooks
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址任何相对独立、复用性强的逻辑,都可以extract为自定义Hook,自定义Hook是一种复用React的状态逻辑的函数。自定义Hook的主要特点是:抽象组件间的状态逻辑,方便复用让功能组件更纯粹,更易于维护自定义Hook可......
  • spring 监听器 IntrospectorCleanupListener简介
     spring中的提供了一个名为org.springframework.web.util.IntrospectorCleanupListener的监听器。它主要负责处理由JavaBeans Introspector的使用而引起的缓冲泄露。spring中对它的描述如下: 它是一个在web应用关闭的时候,清除JavaBeansIntrospector的监听器.在web.xml中......
  • React - 14 Hooks组件之useRef
    1.获取元素的3种方式方式1:ref={x=>refName=x}函数组件中没有this,直接给了一个变量。(可以用但是不推荐)方式2React.createRef()方式3useRef(null)2.函数组件用useRef,类组件用React.createRefimportReact,{useState,useEffect,useRef}from"react";import{Butto......
  • 八期day03-反编译工具和hook框架
    一反编译工具1.1常见反编译工具常见的反编译工具:jadx(推荐)、jeb、GDA反编译工具依赖于java环境,所以我们按照jdk1.2JDK环境安装#官方地址:(需要注册-最新java21)https://www.oracle.com/java/technologies/downloads/#下载地址链接:https://pan.baidu.com/s/1JxmjfGhW......
  • 【胖虎的逆向之路】——GOT/PLT Hook详解&针对自定义so库的Hook实操
    文章目录@[TOC](文章目录)前言一、ELF是什么?1、ELF的概念2、ELF的组成2.1、两种视图是什么呢?2.2、ELF文件头又是什么西西?2.2、ELF中节头表是什么南南呢?2.2、ELF中程序头表是什么北北呢?二、动态库装载、动态链接与重定位简单理解1、装载2、动态链接3、重定位三、PLT与GOTHoo......
  • React - 13 Hooks组件之useEffect
    1.useEffectimportReact,{useState,useEffect}from"react";import{Button}from'antd';import'./Demo.less';/*useEffect:在函数组件中,使用生命周期函数useEffect(callback):没设置依赖+第一次渲染完毕后,执行callback,等价于componentDidMount......