当前位置:网站首页>页面刷新没有执行watch?
页面刷新没有执行watch?
2022-08-04 05:26:00 【愿为浪漫渡此劫】
页面刷新没有执行watch,怎么办?
在实际开发中,页面之间跳转后,会伴随着后端接口的调用,从而获取接口数据,更新跳转后的页面
前言
一般的,我们会把后端接口的调用时机,放在created()钩子里,但是针对跳转到另一个页面后,接口的调用时机还会在created()里面吗?
企业项目开发场景
- 要求:从A页面,跳转到B页面后,需要立即调用B页面的接口,更新页面数据
需求实现一、
将请求放在created()里面,
created() {
// API请求
}
注意:此时跳转后的页面不会自动调用接口,需要手动刷新浏览器才能调用接口
需求实现二、
监听路由跳转变化,根据路由变化,调用接口
watch:{
$route(to,from){
// 路由变化了,
// 调用接口
}
},
注意:此时跳转后的页面会立即调用接口,更新新页面数据,但是,用户刷新页面后,路由监听是不执行的,所有不再调用接口,页面数据丢失
需求实现三
1、监听路由跳转变化,根据路由变化,调用接口
2、同时,在created()调用后端接口
watch:{
$route(to,from){
// 路由变化了,
// 调用接口
}
},
// 避免用户刷新 造成数据丢失
created() {
// API请求
}
注意:此时跳转后的页面会立即调用接口,更新了新页面数据,同时用户刷新页面,也会调用接口,但是,路由变化的同时也是页面初次渲染,所以created和watch都会执行,造成接口重复调用
需求实现四
1、监听路由跳转变化,根据路由变化,调用接口
2、同时,在mounted()调用后端接口,此时页面已经渲染完成
watch:{
$route(to,from){
// 路由变化了,
// 调用接口
}
},
mounted() {
// API请求
}
此时,路径变化,立即调用一次接口,且用户刷新也会调用接口。缺点是:代码冗余,不好维护,可读性差
需求实现四
使用深度监听路由,immediate:true(页面初始化/刷新 立即执行)
watch:{
$route : {
handler(to,from) {
let programName = to.params.programName;
if(!programName) {
return
}else {
this.getArticleListApi(programName,{
programId : to.params.programId
})
}
},
immediate:true, // 页面初始化/刷新 立即执行
}
},
总结:路由造成数据丢失的有多种,最常见的就是浏览器刷新,数据丢失,如果是Vuex造成的,可以借助浏览器本地存储,不过个人推荐使用vuex-persistedstate插件,如果是其他造成的数据丢失,就需要定位到组件,具体问题具体分析了。核心就是:组件钩子函数和watch是否成功执行、是否阻塞执行
边栏推荐
- MySQL date functions
- Sublime Text 3 2021.8.3 个人配置
- 7.13 Day20----MYSQL
- 力扣:746. 使用最小花费爬楼梯
- npm报错Beginning October 4, 2021, all connections to the npm registry - including for package installa
- 渗透测试(PenTest)基础指南
- Web Basics and Exercises for C1 Certification - My Study Notes
- 大龄程序员的心理建设
- FFmpeg源码分析:avformat_open_input
- webrtc中的任务队列TaskQueue
猜你喜欢

入坑软件测试的经验与建议

C1认证之web基础知识及习题——我的学习笔记

4.3 Annotation-based declarative transactions and XML-based declarative transactions

【Matlab仿真】:一带电量为q的电荷以速度v运动,求运动电荷产生磁感应强度

SLSA 框架与软件供应链安全防护

FFmpeg源码分析:avformat_open_input

Cannot read properties of null (reading 'insertBefore')

MySQL日志篇,MySQL日志之binlog日志,binlog日志详解

EntityComponentSystemSamples学习笔记

基于C语言的学生信息管理系统_(更新版)_(附源码和安装包)_课程设计_**往事随風**的博客
随机推荐
Summary of MySQL database interview questions (2022 latest version)
7.18 Day23----标记语言
Web Basics and Exercises for C1 Certification - My Study Notes
7.13 Day20----MYSQL
C语言 -- 操作符详解
手把手教你实现buffer(二)——内存管理及移动语义
TSF微服务治理实战系列(一)——治理蓝图
【论文阅读笔记】无监督行人重识别中的采样策略
Embedded system driver primary [4] - under the basis of character device driver _ concurrency control
EntityComponentSystemSamples学习笔记
即时通讯网 即时通讯音视频开发
SLSA 框架与软件供应链安全防护
webtrc 中VideoAdapter类中的作用及局限
Programming hodgepodge (3)
败给“MySQL”的第60天,我重振旗鼓,四面拿下蚂蚁金服offer
4.1 JdbcTemplate for declarative transactions
Unity表格配置编辑工具
《看见新力量》第四期免费下载!走进十五位科技创业者的精彩故事
Embedded system driver primary [3] - _IO model in character device driver foundation
JS basics - forced type conversion (error-prone, self-use)