• vue之keep-alive组件


    <!DOCTYPE html>
    <html lang="en">
    
    <head>
    	<meta charset="UTF-8">
    	<title></title>
    </head>
    
    <body>
    	<div id="app">
    
    	</div>
    	<script type="text/javascript" src="./vue.min.js"></script>
    	<script type="text/javascript" src="./vue-router.js"></script>
    
    	<script type="text/javascript">
    		Vue.use(VueRouter);
    
    		var A = {
    			template: `
    				<div>我是AAAAAAA</div>
    			`,
    			created() {
    				console.log('A组件created');
    			},
    			mounted() {
    				console.log('A组件mounted');
    			},
    			destroyed() {
    				console.log('A组件被销毁了')
    			}
    		};
    		var B = {
    			template: `
    				<div>
    					<h3 @click = 'clickHandler'>我是BBBB</h3>
    
    				</div>
    			`,
    			methods: {
    				clickHandler(e) {
    					e.target.style.color = 'red';
    				}
    			},
    			created() {
    				console.log('B组件created');
    			},
    			mounted() {
    				console.log('B组件mounted');
    			},
    			destroyed() {
    				console.log('B组件被销毁了')
    			}
    		};
    
    		var router = new VueRouter({
    			routes: [{
    					path: '/a',
    					component: A
    				},
    				{
    					path: '/b',
    					component: B
    				},
    			]
    		});
    
    		var App = {
    			// 使用keep-alive
    			// template: `
    			// 	<div>
    			// 		<router-link to = '/a'>A</router-link>
    			// 		<router-link to = '/b'>B</router-link>
    
    			// 		<keep-alive>
    			// 			<router-view></router-view>
    			// 		</keep-alive> 
    			// 	</div>
    			// `
    
    			// 不使用keep-alive
    			template: `
    				<div>
    					<router-link to = '/a'>A</router-link>
    					<router-link to = '/b'>B</router-link>
    					
    						<router-view></router-view>
    				</div>
    			`
    
    		}
    
    
    		new Vue({
    			el: '#app',
    			template: `<App />`,
    			components: {
    				App
    			},
    			router
    		});
    	</script>
    
    </body>
    
    </html>
    

    不使用keep-alive对路由组件缓存,AB来回切换打印结果如下


    组件来回切换,会重新创建和销毁(A组件的销毁发生在B组件beforeMount和mounted之间)

    使用keep-alive对路由组件缓存,AB来回切换打印结果如下


    组件只会在第一次创建,随后来回切换不会发生销毁

  • 相关阅读:
    Weak Ordering A New Definition†
    源码 prevent gc 阻止gc
    The 1980 ACM Turing Award Lecture
    InnoDB InMemory Structures OnDisk Structures 内存结构 磁盘结构
    MySql 日期格式化
    Asp.Net Core 读取配置文件的方式
    .NETCore .NET6中一些常用组件的配置及使用记录
    NetGet包的查找和使用
    EFCore的导航属性
    WebApi中使用多个Post请求
  • 原文地址:https://www.cnblogs.com/samsara-yx/p/12408038.html
Copyright © 2020-2023  润新知