vue 页面回退mounted函数不执行的解决方案


Posted in Javascript onJuly 26, 2020

前言

最近做项目碰到一个很头大的问题--从a页面跳到b页面进行编辑,编辑完再返回a页面,却没走a页面的钩子函数mounted,数据没有更新

经过一番面向百度研究,终于找到了问题所在。接下来就记录一下这个问题及其解决的方法。

原理

其实这个问题主要涉及到vue生命周期,对vue生命周期理解不够深刻的同学可以去官网学习一下:https://vuejs.org/v2/api/#Options-Lifecycle-Hooks

解决这个问题的关键就在于对keep-alive的理解和activated钩子函数的使用。

当在项目中引入keep-alive的时候,页面第一次进入,钩子函数的触发顺序created -> mounted -> activated,退出时触发deactivated。当再次进入(前进或者后退)时,只触发activated。

我们知道 keep-alive 之后,页面模板第一次初始化解析变成HTML片段后,再次进入就不再重新解析而是读取内存中的数据,即,只有当数据变化时,才使用VirtualDOM进行diff更新。故,页面进入的数据获取应该在activated中也放一份。数据加载完毕手动操作DOM的部分也应该在activated中执行才会生效。

所以,应该activated中留一份数据获取的代码,或者不要created部分,直接将created中的代码转移到activated中。

html结构

vue 页面回退mounted函数不执行的解决方案

js部分--vue生命周期

beforeCreate () {


console.log('在实例初始化之前调用')

}

created () {


console.log('在实例初始化之后调用,经常用于操作数据,发起ajax请求')

}

beforeMount () {


console.log('在挂载开始之前被调用,如果是在服务器端渲染时不被调用;在这个函数里,无法获取元素')

}
 

mounted () {


console.log('在挂载后被调用,也不能在服务器端渲染时被调用;这个函数里,是可以获取元素,并进行操作的')

}

beforeUpdate () {


console.log('视图层数据更新前调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM')

}

updated () {


console.log('视图层数据更新后调用')

}

beforeDestroy () {


console.log('实例销毁之前调用,在被销毁的组件中进行调用;有一些操作,会在实例已经销毁的时候还在运行,这时候为了性能考虑,就在这里结束哪些操作')

}

destroyed () {


console.log('实例销毁后调用。')

}

activated和deactivated配合keep-alive标签使用!

activated () {
console.log('实例被激活时使用,用于重复激活一个实例的时候')
}
deactivated () {
console.log('实例没有被激活时')
}

总结

keep-alive是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM;导致在组件mounted钩子中调用的刷新页面内容时,这个钩子没有被调用。

故:使用Vue组件切换过程,执行钩子activated(keep-alive组件激活时调用),而不是挂载钩子mounted。

补充知识:vue 子组件 created 方法不执行问题

近期做了一个项目 里面有一个树形菜单,将数据写在 js (死数据)中,所有的东西都能够正常执行(i 标签,子节点,父节点),但是当在请求接口文件或者请求后台数据的时候,发现引入的子组件的created方法不执行,但是点击父级菜单展开时还是能够触发,后来发现 是生命周期的问题,仔细查看一下,后来解决 解决方法如下:用watch 检测一下data的数据变化,created方法既然在点击的时候执行,所以也必须保留,好啦,就这样

以上这篇vue 页面回退mounted函数不执行的解决方案就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 嵌套的函数(作用域链)
Mar 15 Javascript
ExtJs使用IFrame的实现代码
Mar 24 Javascript
jquery scroll()区分横向纵向滚动条的方法
Apr 04 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
jQuery简单实现两级下拉菜单效果代码
Sep 15 Javascript
js实现页面跳转的几种方法小结
May 16 Javascript
jQuery实现的弹幕效果完整实例
Sep 06 jQuery
vue用addRoutes实现动态路由的示例
Sep 15 Javascript
angular 数据绑定之[]和{{}}的区别
Sep 25 Javascript
实例讲解vue源码架构
Jan 24 Javascript
使用layui 的layedit定义自己的toolbar方法
Sep 18 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 Javascript
vuex分模块后,实现获取state的值
Jul 26 #Javascript
何时/使用 Vue3 render 函数的教程详解
Jul 25 #Javascript
全面解析JavaScript Module模式
Jul 24 #Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
Jul 24 #Javascript
在Vuex中Mutations修改状态操作
Jul 24 #Javascript
Vue自动构建发布脚本的方法示例
Jul 24 #Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
Jul 24 #Javascript
You might like
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
纯php生成随机密码
2015/10/30 PHP
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
python删除某个目录文件夹的方法
2020/05/26 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
传播学专业毕业生自荐信
2013/11/04 职场文书
四川成都导游欢迎词
2014/01/18 职场文书
男方父母婚礼答谢词
2014/01/25 职场文书
初中语文教学反思
2014/02/02 职场文书
护理专业自荐信范文
2015/03/06 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
react合成事件与原生事件的相关理解
2021/05/13 Javascript
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS