生命周期只执行一次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生命周期只执行一次相关的知识,希望对你有一定的参考价值。

参考技术A

多个不同组件之间的切换的话create、mounted等方法每次都会执行,如果是同一种组件多个页面那种切换就只会开始执行一次。
解决方法:
最简单的做法就是在组件标签增加:key属性,key的值唯一即可。
例如:

其中每个dataItem的index属性的值都是不会重复的,即使相同名字的组件也会执行初始化方法。

原因有以下:
1、<keep-alive>包裹了<router-view />,组件被缓存了。
keep-alive是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。这就是问题所在了。

方法一: :使用activated声明周期。被缓存的组件可以执行activated、deactivated生命周期,可以把mounted里的逻辑放到activated里。
方法二: 在watch里监听路由变化,执行页面初始化方法。
方法三: 给<router-view /> 添加唯一key属性。
2、<keep-alive> 接收include,exclude属性,可以自定义需要缓存的组件,include表示需要缓存的组件,exclude表示不需要缓存的组件。把不需要缓存的去掉就可以了。 如果去掉之后发现还是被缓存,可能是定义路由meta那里加了属性keepAlive: true(此处为true表示该组件需要缓存),然后通过v-if判断router-view是否要被keep-alive包裹。

Servlet的生命周期

Servlet_生命周期,:

1)被创建:执行init方法,只执行一次
2)提供服务:执行service方法,执行多次
3)被销毁:当Servlet服务器正常关闭时,执行destroy方法,只执行一次

 1 //servlet生命周期,的三个方法,1.被创建,执行且只执行一次init方法,2.提供服务,执行service方法,执行多次 3.被销毁,当Servlet服务器正常关闭时,执行destroy方法,只执行一次。
 2     
 3     @Override
 4     public void init() throws ServletException 
 5         // TODO Auto-generated method stub
 6         super.init();
 7     
 8     
 9     @Override
10     protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
11         // TODO Auto-generated method stub
12         super.service(req, resp);
13     
14     
15     @Override
16     public void destroy() 
17         // TODO Auto-generated method stub
18         super.destroy();
19     

 

以上是关于生命周期只执行一次的主要内容,如果未能解决你的问题,请参考以下文章

保证某段代码在程序的生命周期内只执行一次

unity中常用脚本生命周期全解

react 生命周期

REACT——生命周期函数

Spring生命周期以及Aop的执行时机总结

生命周期函数