Vue+Axios自动更新

Electron+Vite+Vue3实战:从零搭建企业级桌面应用框架(附完整配置代码) 本文详细介绍了如何使用Electron+Vite+Vue3从零搭建企业级桌面应用框架。通过环境准备、核心架构设计、网络请求封装、进程通信等实战步骤,帮助开发者快速构建高性能、可扩展的跨平台应用。文章包含完整配置代码和最佳实践,特别适合需要开发现代化桌面应用的技术团队。 阅读详情

本文首发于我的个人博客

本篇文章记录了作者在使用Vue+Axios实现前端自动刷新数据时,遇到的一个坑点。

场景需求

在一个Vue单页应用中,使用VueRouter实现了App组件中点击链接后呈现Component组件的功能

App.Vue -> Component.Vue

现在需要:在Component加载出来之后,每间隔1s的时间,自动通过Axios向后端接口获取数据并更新。

有问题的实现方式

App.Vue,内置router-link,可以跳转呈现Component

// App.Vue
<template>
    <div>
        <router-link :to="/Component">Component</router-link>
        <router-view></router-view>
    </div>
</template>

Component.Vue,在创建时,使用setInterval创建1s中的循环动作,在动作中使用Axios获取后端数据

// Component.Vue
<template>
    <div></div>
</template>

<script>
export default {
    created() {
        // 设置一个间隔1s就进行的动作
        setInterval(() => {
            Axios.get("/data").then((res) => {
                // 业务逻辑
            })
        }, 1000)
    }
}
</script>

问题分析

出现问题的原因在于:

只有setInterval,没有clearInterval

一个循环任务一旦被创建,就没有被销毁的可能,但是每次用户点击Component链接,都会创建Component实例,产生循环任务。

如果用户多次点击了App.Vue中的Component链接,那么就会在前端浏览器里产生多个循环任务,不断发送请求,最终导致前后端都不堪重负。

解决方案

通过data记录created中产生的循环任务,并在beforeDestroy里加入clearInterval清除它。

// Component.Vue
<template>
    <div></div>
</template>

<script>
export default {
    data() {
        return {
            timer : {},
        }
    },
    created() {
        // 设置一个间隔1s就进行的动作
        this.timer = setInterval(() => {
            Axios.get("/data").then((res) => {
                // 业务逻辑
            })
        }, 1000)
    },
    beforeDestroy() {
        clearInterval(this.timer)
    }
}
</script>
每日三道前端面试题--vue 第四弹 每日三道前端面试题--vue 第四弹什么是vue的计算属性?官方定义:计算属性和侦听属性有什么区别?怎样选择?两者之间的对比两者之间的区别两者之间怎样选择总结简述axios的安装和引入?axios安装vue2.0axios引入vue3.0 axios引入 什么是vue的计算属性? 官方定义: 计算属性,就是当其依赖属性的值发生变化时,这个属性的值会自动更新,与之相关的 DOM 部分也会同步自动更新。 计算属性实际上是一个方法,它可以完成各种复杂的逻辑,包括运算、函数调用等,并最终返回一个值。之前的章节中介绍 阅读详情

相关推荐

vue使用axios实现文件上传进度的实时更新详解

axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征: 从浏览器中创建 XMLHttpRequest 从 node.js 发出 http 请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防止 CSRF/XSRF 引入方式: $ npm install axios //使用淘宝源 $ cnpm install axios //或者使用cdn: <script src=https://unpkg.com/axios/dist/

vue中axios请求回来的数据如何实现局部的自动更新

最近公司让做的一个项目要求是让表格里面的数据实现自动更新。我一开始想的是用定时器,但是使用定时器的话,页面的的其他部分加载不出来了。而且定时器设置的时间间隔短的话会造成栈溢出。 后来变化了一个思路,如下: 首先在全局定义一个变量refresh的值为true,在要实现局部刷新的table上绑定 v-if="refresh"。 定义一个变量为tData,将axios请求回来的数据resp赋值给data。 watch里面深度监听data,如果data改变那么执行函数。【注:alarmList是发送axio

Canace_Xyxjjcaw的博客 4334

实证研究之|stata清洗charls数据

stata

qq_45313933的博客 6759

关于axios拦截之重发请求

axios拦截很容易使用;毕竟有现成的接口摆着,拦下来做个处理就好了 于是领导要求拦截固定报错然后重发请求;easy理解easydo ··· xxx.response.use(res=>{ if(true) 新的请求····拿到新的请求res2; res=res2; return res; //合情合理,然而就是不能用~~~~~~~瞬间就是懵逼的结果了; }) 不会的还是要在网上去找了;...

weixin_43061527的博客 782

Qt绘图库对决:QWT与QCustomPlot的实战选型指南

本文为Qt开发者提供了QWT与QCustomPlot两大绘图库的实战选型指南。文章从功能特性、性能资源、开发效率三大维度进行深度对比,并结合工业监控、科学计算、嵌入式设备等典型场景,给出了清晰的决策清单。对于需要专业科学图表(如极坐标、等高线图)的场景推荐QWT;对于追求高性能、实时性、快速开发及嵌入式部署的通用图表需求,QCustomPlot是更优选择。

alpha的博客 241

EEVDF调度算法核心实现解析(一)

本文深入解析Linux kernel 6.6引入的EEVDF调度算法核心实现,详细讲解其基于虚拟截止时间(virtual deadline)的进程挑选机制和红黑树优化设计。通过代码实例展示算法如何平衡系统响应速度与公平性,特别适合需要优化Linux系统性能的开发者参考。

weixin_42522953的博客 477

VUE-实时刷新ajax请求($axios) setInterval()方法使用和禁用按钮实现

页面要实时去抓取数据库和刷新数据: vue写入: getData(){ setInterval(()=>{ this.$axios({ url: "http://localhost:8088/teacher/selectTeacherLeave", method: "post", data: {} })...

panlupeng的博客 4708

Vue和Vue-Element-Admin(六):集成中的CORS(跨域资源共享)问题

在vue-element-admin登录集成时候碰到跨域资源共享问题,CORS(Cross-origin resource sharing)是浏览器的技术规范,浏览器可以发起跨域请求但Javascript脚本不能,传统的ajax只能获取在同域名下的资源,但Html5允许ajax发起跨域请求,解决方案有:JSONP、Flash、IFrame、CORS。 一、CORS(跨域资源共享)问题 针对vue-element-admin的登录模块的后端接口完成后,前端调用时候出现报错,因为前端的端口是9527而后.

叶子叶来 9614

vue中组件动态传值,实现数据实时更新

vue组件动态传值,实时更新

qq_33404590的博客 7085

unitree-G1外接 USB 麦克风完整配置指南

首先,将type-c麦克风插入G1机器人的USB口后,记录下USB麦克风的卡号(card)和设备号(device),通常显示为 card 1: Device [USB Audio Device]

m0_47999117的博客 597

GameFramework框架详解之 DataTable配置表模块

一.前言: DataTable模块是项目的配置表模块,配置表一般是从excel导出csv/json/xml格式的,之所以是excel作为源文件,原因是因为策划同学使用配表最方便。然后一键导出到项目中,除了csv/json/xml配置文件外,一般还会伴随着导出配置的实体类,这样研发同学就可以使用了。GameFramework的DataTable模块也是秉持着这种一贯的策略来实现的。 二.DataRow DataRow在excel数据表中,对应的是一行数据,而在代码中对应的其实就是一条数据对象。 接口IData

TxNet 4726

Vue 中的定时刷新与自动更新实现

如果需要定时刷新页面,可以使用,但要注意频繁刷新可能影响用户体验和服务器负担。如果只需要定时更新数据,使用 Vue 的响应式数据和是一个轻量级的选择。若是定时获取服务器数据,可以结合axios和来实现,需注意 API 请求频率。对于一次性延时操作,可以使用setTimeout来执行。

XMYX-0 4448

手把手教你学simulink(31.17)--双向DCDC电源场景示例:基于simulink 的双向DCDC应用:车载充电器的pi控制

通过引入PI控制器,系统可以更精确地控制电压和电流,确保充电和放电过程的稳定性和高效性。

MHD0815的博客 205

vue异步数据 报错_vue异步axios获取的数据渲染到页面的方法

我们在vue,数据很多事异步获取来的,如果在template直接使用,会报错,undefined。因为先渲染后得到的数据,那如何才能不报错呢?computed!!!举个例子index.vue忽略坑人的传参方式。。。created(){this.init()this.axios.post('/wanwei/appserver/eqinfo/eqbaseinfo?reqjson={"eq_code":...

weixin_39658726的博客 701

基于深度学习的电力系统暂态稳定评估与预防控制复现

本文复现了基于深度学习的电力系统暂态稳定评估与预防控制方法。主要内容包括:(1)数据预处理环节,对IEEE 39节点系统的电压幅值、相角等特征数据进行归一化处理;(2)ACNGAT模型实现,该模型结合时间卷积网络(TCN)和图注意力网络(GAT)提取时空特征;(3)采用改进的帝企鹅优化算法进行预防控制。关键技术点包括:融合时空信息的特征提取、改进的邻接矩阵构建方法(λ_ij = E_i * E_j * B_ij)以及时空注意力机制。代码实现采用Python和PyTorch框架。

huanghm88的专栏 335

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

vue脚手架

vue脚手架和一些零碎的包安装和配置 vue脚手架安装步骤 : 1、安装vue-cli (如果电脑上已经安装过全局的第一步可以省略) cnpm install vue-cli -g 2、初始化脚手架 vue init webpack app(项目名) 查看 npm start nodejs脚手架 首先电脑上要装nodejs 在安装express mkdir myapp 新建一个my...

weixin_45493439的博客 260

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

axios获取html页面,vue异步axios获取的数据渲染到页面的方法

我们在vue,数据很多事异步获取来的,如果在template直接使用,会报错,undefined。因为先渲染后得到的数据,那如何才能不报错呢?computed!!!举个例子index.vue忽略坑人的传参方式。。。created(){this.init()this.axios.post('/wanwei/appserver/eqInfo/eqBaseInfo?reqjson={"eq_code":...

weixin_35661850的博客 1660

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

1.初识Vue

1.初识Vue

weixin_43893483的博客 180

记录(Vue3中常用的组合式API)

以上例子中,使用axios库进行了一个API请求,尝试检索数据,任何错误都被记录到控制台。计算属性依赖于其他响应式数据,并且只有在依赖发生变化时才会重新计算值。在Vue组件中进行API请求和管理异步操作时,可以使用像axios这样的库。以上,定义了一个名为squared的计算属性,表示count的平方。,可以使数据管理变得更加便利。通过组合式API提供的。这个函数是API创建的。

上班就犯困 338

vue实现显示实时时间

今天在项目中有一个功能是要求显示北京的实时时间,后台的接口用的淘宝获取当前时间API。可以自己看看实现的思路。返回来的是一个时间戳。

qq_51953294的博客 740

vue修改http请求头_在请求里配置头部数据《 Vue.js 前端应用 #9:请求接口 》

在这个组件的模板里添加一个 text 类型的 input 元素,在元素上用 v-model 绑定一个数据,名字是 title,再绑定元素的 keyup 事件,按 enter 按键的时候,执行这个组件里的 createPost 方法。在组件里添加一个数据,名字叫做 title 。再去定义一个方法,先在组件里添加一个 methods, 里面定义一个 createPost 方法。在这个方法里用一组 tr...

weixin_39636717的博客 2362

Vue2.6简介以及创建Vue项目和简单的语法

Vue简介与项目创建摘要 Vue是一个用于构建网页交互部分的JavaScript框架,它简化了传统原生JavaScript处理动态交互的繁琐过程。Vue的两大核心优势是:1)数据与页面自动联动,数据变化时页面自动更新;2)组件化开发,将页面拆分为独立可复用的组件。 创建Vue项目需要先安装Node.js环境,然后通过Vue CLI命令行工具初始化项目。典型项目结构包含src目录(存放源码)、public目录(静态资源)和配置文件如vue.config.js(可配置开发服务器端口等)。 Vue Router是

weixin_75111785的博客 1104

VUE项目更新后需要客户手动刷新浏览器问题

VUE项目更新后需要客户手动刷新浏览器问题

wen_rou11的博客 2375

记录vue设置动态网页seo

入口文件main.js配置 data:{ 'keywords':'', 'description':'', 'title':'' }, created(){ lethead=document.getElementsByTagName('head');//创建head标签 letmeta1=document.createElement('meta');//创建meta标签 letmeta2=docu...

weixin_44334111的博客 812

【笔记】Vue

【笔记】Vue

2022年毕业的萌新程序猿,输出一下自己的学习内容~ 148

vue项目更新后文件存在缓存,需要强制刷新才能呈现更新

前言 vue项目每次发布新版本后,测试人员都要强制刷新才能更新浏览器代码来验证bug。对于用户来说,这更不合理。于是,想办法让浏览器自动更新文件。 开始 1.在static静态目录下新建version.json每次发版更改里面的版本号 { "version": "1.0.1" } 2.在src中新建 libs/versionUpdate.js文件 import axios from 'axios' const isNewVersion = () => { let url = `//$

qq_39352780的博客 1万+
上一篇: golang中使用elasticsearch
下一篇: golang获取执行函数名,执行文件名与所在行数
FitzLeopard
博客等级 码龄9年 6粉丝 44原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值