vue项目中beforeDestroy和destroyed 钩子不起作用或者说不生效的原因和解决办法

这篇具有很好参考价值的文章主要介绍了vue项目中beforeDestroy和destroyed 钩子不起作用或者说不生效的原因和解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目中,在destroyed 写了东西,不生效,后来发现beforeDestroy也没走,就很好奇,为什么?进来的程序猿/程序媛是不是和我一样呢?

  destroyed () {
    let lastTime = new Date()
    console.log(lastTime, '---------stay-----')
  }

**

方法一:keep-alive改为false,即不使用

**
这时候排查原因,不断的找,最后发现,很简单,keep-alive的原因,keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们,所以修改一下,就好了

<template>
  <div id="app">   
      <keep-alive>
        <router-view v-if="$route.meta.keepAlive"></router-view>
      </keep-alive>
      <router-view v-if="!$route.meta.keepAlive"></router-view>
  </div>
</template>
    {
      path: '/priceTrigger/param',
      name: 'paramStatement',
      component: resolve => require(['@/views/paramStatement'], resolve),
      meta: {
        title: '网格交易',
        keepAlive: false
      }
    },

就这样就成功啦~
如果你必须要用keep-alive,那么可以继续往下看了

方法二:使用keep-alive会执行的钩子函数

是不是想说,哇,难道没有解决办法了,那不是的,是不是忘记了keep-alive执行的钩子了, activated,deactivated,进入缓存的页面,还有这两个钩子函数要执行,所以,当你离开页面的时候执行的事件,可以放deactivated中,这样就轻松解决了

  activated () {
    console.log('---activated:')
   }
 deactivated () {
    let lastTime = new Date()
    console.log(lastTime, '---------stay-----')
  }

使用keep-alive后activated和deactivated这两个钩子,是vue中比较重要的两个钩子函数,切记切记!!!
这个人的keep-alive讲的特别好,推荐有时间的去看看文章来源地址https://www.toymoban.com/news/detail-539478.html

到了这里,关于vue项目中beforeDestroy和destroyed 钩子不起作用或者说不生效的原因和解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • wx.miniProgram.navigaTo不起作用

    最近写了两个个h5页面嵌套在小程序中,其中有一个按钮点击通过window.location.href跳转到第二个页面,在第二个页面中需要点击跳转按钮跳转到小程序中的某个页面,但是点击了没反应 现将问题记录如下 解决方法 总结: 如果直接用window.location.href这种方式 小程序内嵌h5页面去

    2024年02月11日
    浏览(42)
  • github中.gitignore不起作用啦

    提示:人不是靠讲话来生活。每个人都应该靠行动。而行动,是需要时间来证明的。 --《自在独行》 (.gitignore中已经表标明忽略的文件目录下的文件了,所有git push 的时候还是出现在push的目录中,或者使用git status 查看状态,看看想要被忽略的文件是否是显示被跟踪状态) 重

    2024年02月06日
    浏览(36)
  • vscode安装中文插件后不起作用

    安装中文插件后,中文并没有如期出现或者偶尔会自动变成英文 方法一: 点击 Uninstall ,重新安装,再重启vscode 方法二: 在vscode中,按住 ctr+shift+p ,在出现的输入框中,输入 Configure Display Language ,在弹出的语言中,选中zh-cn,软件弹出提示。点击重启(Restart)按钮后,中文即可生

    2024年02月07日
    浏览(54)
  • css中calc不生效(不起作用)

    css中calc属性不起作用 1、格式错误 calc属性作用不起作用是因为书写格式错误,正确的格式需要在运算符的两边留有空格。 2、父元素需要设置高度或者宽度,不能用100%。 scss、less函数不生效 如果还解决不了,请留言 。 Up高频在线

    2024年02月13日
    浏览(38)
  • 使用动态sql时,if标签不起作用

    目录 场景: 问题分析: 问题解决: 简单讲一下应用场景 我拿到一个项目,完成后端数据处理,在进行可选条件查询时,使用动态sql  在mapper.xml中我先是这么写的  然后,就出现if标签失效的情况,关键是它有时候也会返回到前端数据,给我都搞蒙了 反复查看,加上网搜索

    2024年01月23日
    浏览(41)
  • git的.gitignore文件更新后不起作用

    首先,让我们回顾一下 .gitignore 文件的作用。 .gitignore 文件用于指定哪些文件或目录应该被Git忽略,即这些文件和目录不会被添加到版本控制中。它使用简单的模式匹配规则来定义要忽略的文件或目录。 下面是一些可能导致 .gitignore 文件不起作用的原因: 如果您在 .gitignor

    2024年02月13日
    浏览(37)
  • react钩子副作用理解

    useEffect(() = { fetch(‘https://api.example.com/data’) .then(response = response.json()) .then(data = setData(data)); }, []); 怎么理解这个[] 在 React 中,useEffect 钩子用于处理副作用,比如数据获取、订阅、手动 DOM 操作等。useEffect 接受两个参数:一个是副作用函数,另一个是依赖数组。 在你提供的代

    2024年02月13日
    浏览(32)
  • unity 预制文本\n换行不起作用

    问题:预制体的文本在Inspector直接用n换行不生效 原因:因为unity会默认把n替换成\\\\n         预制体文本用换行符直接换好,如果要用代码替换换行,使用n换行没有生效。         需要把\\\\n替换成n,以下是我写的一个替换工具

    2024年02月11日
    浏览(43)
  • 小程序页面传递布尔值不起作用的解决方法

    传参: 以下方式使用时不起作用或出现问题: 这种方式传参后isprincipal的值已为字符串‘true’。 需改成如下形式:

    2024年02月14日
    浏览(41)
  • 解决在Android Studio中Lombok不起作用的问题

    笔者报错时的运行环境: Android Studio Flamingo | 2022.2.1 RC 1 Gradle 8.0.1 Lombok 1.18.26 JDK 17 Lombok 插件 0.34-2020.2 笔者在刚安装完的 Android Studio 中使用 Lombok 时,发现 Lombok 不起作用。具体遇到的问题有两个: Lombok 的注解在 Android Studio 中报红。 本来应该由 Lombok 生成的方法在 Android S

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包