返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue项目watch内的函数重复触发问题的解决
  • 238
分享到

vue项目watch内的函数重复触发问题的解决

2024-04-02 19:04:59 238人浏览 八月长安
摘要

目录问题描述:解决方法1解决方法2问题描述: 有两个页面A和B,每个页面里都有一个getList()方法。这个两个方法都需要传一个相同的参数C,参数C的选择过程又比较麻烦。为了避免

问题描述:

有两个页面A和B,每个页面里都有一个getList()方法。这个两个方法都需要传一个相同的参数C,参数C的选择过程又比较麻烦。为了避免在切换A、B两个界面重复选择参数C的问题,我将参数C存入Vuex中,然后在两个页面里都使用watch监听参数C来执行getList()方法。然后发现一个问题,从A页面进入B页面后,在B页面重新选择参数C,A页面的getList()方法竟然也会被执行,反之亦然,从B页面到A页面后,在A页面改变参数C也会执行B页面的getList()方法。

后来发现是使用了因为使用了keep-alive所致,keep-alive会将Vue实例始终保持在内存中,因此该Vue实例始终存续,相应的watchers始终生效,查找相关资料后,发现许多人也遇到了这个问题,最后找到以下两种解决方案:

解决方法1

通过router路径来判断是否执行getList()


watch: {
        someValue(newValue, oldValue) {
            if (this.$route.fullPath === 'A页面路由路径') {
                // do something
            }
        }
    }

解决方法2

添加一个flag参数来判断页面是否是active状态,使用keep-alive缓存的组件只会触发activateddeactivated事件,所以就在这两个事件触发时把flag置为true和false,只有在flag为true的时候才执行getList()


{
  data () {
    return {
      activatedFlag: false
    };
  },
  watch: {
    'someValue'(val) {
      if(val && this.activatedFlag) {
        this.getlist();
      }
    }
  },
  activated () {
    this.activatedFlag = true;
  },
  deactivated () {
    this.activatedFlag = false;
  }
}

如果页面比较多,而且各页面里的函数名称不一致的话,可以把上面代码的watch部分去掉写成一个mixin,在需要的页面引入即可


  import activeFlag from "@/mixin/activeFlag";

  export default {
    mixins: [activeFlag],
    watch: {
        'someValue'(val) {
          if(val && this.activatedFlag) {
            this.getlistA();
            this.getlistB();
          }
        }
      },
  }

以上就是vue项目watch内的函数重复触发问题的两种解决方案的详细内容,更多关于vue watch函数重复触发解决的资料请关注编程网其它相关文章!

--结束END--

本文标题: vue项目watch内的函数重复触发问题的解决

本文链接: https://lsjlt.com/news/123200.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue项目watch内的函数重复触发问题的解决
    目录问题描述:解决方法1解决方法2问题描述: 有两个页面A和B,每个页面里都有一个getList()方法。这个两个方法都需要传一个相同的参数C,参数C的选择过程又比较麻烦。为了避免...
    99+
    2024-04-02
  • vue中watch监听器的触发时机(watch的坑及解决)
    目录watch监听器的触发时机起因代码watch控制台说明vue watch的理解小记watch监听器的触发时机 起因 我需要在页面created时获得商家的类型id值,然后监听id...
    99+
    2024-04-02
  • 解决运行vue项目内存溢出问题
    目录运行vue项目内存溢出记录一下JavaScript heap out of memory(Vue项目运行内存溢出)解决方法运行vue项目内存溢出 npm clone下拉的项目,s...
    99+
    2024-04-02
  • Vue开发项目中的兼容问题怎么解决
    今天小编给大家分享一下Vue开发项目中的兼容问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. KingEdit...
    99+
    2023-07-04
  • vue-router的beforeRouteUpdate不触发问题怎么解决
    这篇文章主要介绍“vue-router的beforeRouteUpdate不触发问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue-router的beforeRouteUpd...
    99+
    2023-06-30
  • vue项目内存溢出问题及解决方案
    目录vue项目内存溢出的解决vue项目内存溢出问题问题解决方法1解决方法2总结vue项目内存溢出的解决 最近在对原有项目进行迭代升级,有用代码越来越多,导致内存溢出了。 正常启动运行...
    99+
    2023-01-28
    vue项目内存溢出 vue内存溢出 内存溢出问题
  • vue项目无法删除的问题及解决
    目录vue项目无法删除vue新增与删除问题vue项目无法删除 问题 今天删除本地的vue项目,一直提示“操作无法完成,因为其中的文件夹或文件已在另一个程序组打开,请关闭该...
    99+
    2024-04-02
  • Vue中emit事件无法触发的问题及解决
    目录Vue emit事件无法触发问题Vue中emit的使用vue子传父参数的方法共有两种 下列优先讲解下其emit的传输方法 Vue emit事件无法触发问题 在...
    99+
    2024-04-02
  • 如何解决 PHP 函数中重复代码的问题?
    通过封装重复代码,可以使用函数和闭包来消除代码中的冗余。函数将重复的任务封装成可重复使用的单元,闭包封装重复代码,并可以在函数外部访问作用域变量。实战案例中,我们将重复的发送电子邮件代码...
    99+
    2024-05-01
    php 重复代码 作用域
  • vue-cli创建项目的loader问题怎么解决
    这篇文章主要介绍“vue-cli创建项目的loader问题怎么解决”,在日常操作中,相信很多人在vue-cli创建项目的loader问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue-cli创建...
    99+
    2023-07-04
  • 如何解决将three项目迁移至vue项目遇到的问题
    这篇文章主要介绍了如何解决将three项目迁移至vue项目遇到的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过npm下载的three依赖无法正常使用在原项目中使用的是...
    99+
    2023-06-28
  • vue项目部署到非根目录下的问题及解决
    目录问题描述解决方案1、Vue配置2、修改路由vue项目部署在非根目录下的配置版本vue项目配置nginx配置问题描述 同一个生产部署项目,基内外网的访问路径并不相同,内网是基于域名...
    99+
    2024-04-02
  • 开启Vue项目缺少node_models包的问题及解决
    目录开启Vue项目缺少node_models包运用Vue ui时出现的一些问题vue项目依赖node_modules装不上去开启Vue项目缺少node_models包 运用Vue u...
    99+
    2024-04-02
  • 多个vue项目复用一个node_modules的问题
    目录多个vue项目复用一个node_modulesvue项目共用node_modules问题目的多个vue项目复用一个node_modules 公司的好多个vue小项目的依赖包基本是...
    99+
    2024-04-02
  • 解决.NetCore项目发布在IIS上访问404的问题
    对策: 1.进入线程池画面,将当前程序的线程池设为“无托管代码” 2.修改配置文件 Web.config,加上配置 原因: 因为.NetCore 5.0 自带集成了Swagger ...
    99+
    2024-04-02
  • 如何解决vue项目开发中setTimeout等定时器的管理问题
    小编给大家分享一下如何解决vue项目开发中setTimeout等定时器的管理问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、问题来源。在项目中,我们经常有这样的需求,一个页面初始化后...
    99+
    2024-04-02
  • vue-cli npm如何解决vue项目中缺失core-js的问题
    目录vue-cli npm解决vue项目中缺失core-js报错原因解决办法vue踩坑:this dependency was not found问题背景vue-cli npm解决v...
    99+
    2022-11-13
    vue-cli npm vue项目中core-js vue缺失core-js
  • springboot项目拦截器重定向循环问题的解决
    目录springboot项目拦截器重定向循环解决办法springboot拦截器无限循环报错springboot项目拦截器重定向循环 本菜鸟很久没写东西了,这回是解决了一个小问题,希望...
    99+
    2024-04-02
  • 如何解决vue-cli+webpack新建项目出错的问题
    小编给大家分享一下如何解决vue-cli+webpack新建项目出错的问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用 npm init webpack love 创建一个新项目,然...
    99+
    2024-04-02
  • Vue项目中使用addRoutes出现问题的解决方法
    目录前言 一、404页面 1. 出现的原因 2. 解决方案 二、刷新白屏 1. 出现原因 2. 解决方案 三、路由重复 1.  出现原因 2. 解决方案 总结前言 add...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作