解决vue项目F5刷新mounted里的函数不执行问题
项目背景
在主文件index.vue中初始化页面相关的操作,
在mounted中放置用户权限判断并更新store中的权限值,当点击相应组件时mounted可正常工作,
但是在用户手动刷新时mounted内的函数并未执行,导致相应组件未获取到权限而显示异常
问题解决
首先,这跟vue生命周期有关,图就不贴了,直接说原因。
当用户f5刷新页面时,整个页面会重新去请求,js的状态变量消失,但是el节点并未重新建立。
因为,mounted是el被新创建的vm.$el替换,并挂载到实例上去之后调用的钩子,此处el并未重新挂载,故该钩子函数不会被调用。
此处可以将用户权限判断的方法根据实际情况写在beforeMount或created中
常见的钩子触发事件
beforeCreate
在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。数据和实例都不能访问
created
实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
数据可以访问,实例不可访问
beforeMount
在挂载开始之前被调用:相关的 render 函数首次被调用。
DOM挂载前,数据可访问,实例$el为虚拟DOM节点,不可访问,数据还未插入DOM中
mounted
el 被新创建的 vm.el替换,并挂载到实例上去之后调用该钩子。此时 el 替换,并挂载到实例上去之后调用该钩子。此时el替换,并挂载到实例上去之后调用该钩子。此时el为真实的DOM元素
beforeUpdate
数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。
updated
数据更新之后。
由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。
该钩子在服务器端渲染期间不被调用。
beforeDestroy
实例销毁之前调用。此时实例还可以使用
destroyed
Vue 实例销毁后调用。此时Vue实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。
以上这篇解决vue项目F5刷新mounted里的函数不执行问题就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
- 为 VUE 项目添加 PWA 解决发布后刷新报错问题
- 解决vue项目中type=”file“ change事件只执行一次的问题
- Nginx部署Vue项目以及解决刷新页面404问题
- 解决vue打包项目后刷新404的问题
- 解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
- 解决vue项目nginx部署到非根目录下刷新空白的问题
- 下载一个vue项目执行npm install 后运行项目npm run dev后出错 - 问题解决
- 解决vue项目刷新后,导航菜单高亮显示的位置不对问题
- 处理 C++ 项目中的 IntelliSense 失败:输入类实例后,不能显示其成员几成员函数问题解决
- 解决问题:vs 使用命令行参数调试时出现"当前项目设置指定将使用特定的安全权限对该项目进行调试.在此模式下,命令行参数将不会传递给可执行文件."
- hbuilder+myeclipse开发解决hbuilder修改静态文件,要刷新myeclipse项目的问题
- javascript中运用闭包和自执行函数解决大量的全局变量问题
- Eval函数解决字符串JS在IE下不执行的问题
- webpack打包vue项目后,一些文件图片路径找不到的问题解决办法
- 解决IDEA打开web项目时不能随时刷新HTML或者JSP页面问题
- 关于php页面最大执行时间问题(set_time_limit函数在windows下不起作用的解决)
- 采用自执行的匿名函数解决for循环使用闭包的问题
- 解决在Vue项目中时常因为代码缩进导致页面报错的问题
- 解决tomcat部署下的web项目网页更改不能自动刷新的问题
- 解决vue-router嵌套路由(子路由)在history模式下刷新无法渲染页面的问题