Vue组件之name属性
我们在注册Vue组件时会遇到给组件命名,但好像我又没怎么使用过这个属性。export default {name:'xxx'}看了下官网给 name 属性做出的解释这里总结了几个在注册组件时 name 属性的用法:1、当项目使用 keep-alive 时,可搭配组件 name 进行缓存过滤。export default {name:'Demo'},mounted(){this.getInfo()}
·
我们在注册Vue组件时会遇到给组件命名,但好像我又没怎么使用过这个属性。
export default {
name:'xxx'
}
看了下官网给 name
属性做出的解释
这里总结了几个在注册组件时 name
属性的用法:
1、当项目使用 keep-alive
时,可搭配组件 name 进行缓存过滤。
export default {
name:'Demo'
},
mounted(){
this.getInfo()
},
methods:{
getInfo(){
console.log('Hello Vue')
}
}
因为在 App.vue 中使用了 keep-alive
导致第二次进入页面的时候不会执行 mounted
中的 getInfo() 函数,此时有两个解决方案:
- 使用
activated
函数 - 在 keep-alive 中增加一个
exclude
过滤
<div id="app">
<keep-alive exclude="Demo">
<router-view/>
</keep-alive>
</div>
2、DOM 做递归组件时需要调用自身 name。
假如有 List 组件
<div>
<div v-for="(item,index) of list" :key="index">
<div>
<span class="item-title-icon"></span>
{{item.title}}
</div>
<div v-if="item.children" >
<detail-list :list="item.children"></detail-list>
</div>
</div>
</div>
<script>
export default {
name:'DetailList',//递归组件是指组件自身调用自身
props:{
list:Array
}
}
</script>
list 数据为:
const list = [{
"title": "A",
"children": [{
"title": "A-A",
"children": [{
"title": "A-A-A"
}]
},{
"title": "A-B"
}]
}, {
"title": "B"
}, {
"title": "C"
}, {
"title": "D"
}]
3、当你用 vue-tools 时,vue-devtools
调试工具里显示的组见名称是由 vue 中组件 name 决定的。
更多推荐
已为社区贡献1条内容
所有评论(0)