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 相关文章推荐
扩展String功能方法
Sep 22 Javascript
JavaScript 格式字符串的应用
Mar 29 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
May 03 Javascript
如何实现textarea里的不同文本显示不同颜色
Jan 20 Javascript
jQuery实现下拉框左右选择的简单实例
Feb 22 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
Mar 14 Javascript
vue-cli中的webpack配置详解
Sep 25 Javascript
详解微信小程序缓存--缓存时效性
May 02 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
Jun 19 Javascript
js实现div色块拖动录制
Jan 16 Javascript
关于vue的列表图片选中打钩操作
Sep 09 Javascript
vue3.0 的 Composition API 的使用示例
Oct 26 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
PHP大文件分块上传功能实例详解
2019/07/22 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
JS实现根据出生年月计算年龄
2014/01/10 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
python线程池threadpool使用篇
2018/04/27 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
Python pandas库中的isnull()详解
2019/12/26 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
电子商务专员岗位职责
2013/12/11 职场文书
行政助理工作职责范本
2014/03/04 职场文书
企业环保标语
2014/06/10 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
小学班主任教育随笔
2015/08/15 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书