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