vue中組件的name屬性含義和用法示例
前言
name屬性:只有作為組件選項時起作用,用來注冊組件名
1、注冊組件名
局部注冊組件,語法:export default{ components:{"組件名":組件對象}}
其中,"組件名"
注冊方法:
方法一:隨便取名,
例:export default{components:{"ComMy":{template:'<h1><h1>'}}
隨便取名為:ComMy
方法二:用組件對象中的name屬性值
組件對象name屬性:是指要引用的子組件對象,向外暴露的name屬性
例:
file1.vue中:組件中定義name屬性和name屬性值
<script> export default{ name:"ComNameHello" } </script>
file2.vue中:創(chuàng)建組件–>引用組件–>注冊組件–>使用組件
// 1.創(chuàng)建組件 <template> <div> <ComNameHello></ComNameHello> //4.使用組件 可使用組件file1.vue </div> </template> <script> import ComName from "./file1.vue" //2.引用組件 ComName為file1.vue的組件對象 export default{ componemts:{ // 3.注冊組件 [ComName.name]: ComName // ComName.name用來獲取:file1.vue的組件對象的name屬性值, // -->是一個字符串"ComNameHello", // -->被用做:組件名 // key是變量,必須用“[]”包起來 // ComName 是組件對象 // 即:components:{"組件名":組件對象} } } </script>
2、應(yīng)用一:遞歸組件
遞歸組件:組件在當(dāng)前自身組件中,調(diào)用自身組件
例:
<template> <div > <h1>組件遞歸</h1> // 使用子組件ComChild <com-child :list="list"></com-child> // 向子組件傳遞數(shù)據(jù) </div> </template> <script> export default { name: 'ComList', data() { return { list: [{ title: 'A', children: [{ title: 'A_A1', },{ title: 'A_A2', children: [{ title: 'A_A2_A1', },{ title: 'A_A2_A2', }] }] },{ "title": "B" },{ "title": "C" }] } }, components: { ComChild: { // 自定義子組件 name: 'ComChild', // 模板 // 在組件內(nèi)部調(diào)用自己 // (1):list="list" --> 即:變量list="來自父組件的值" // (2)使用v-for遞歸組件時-->需在當(dāng)前組件(組件名'ComList')中, // -->調(diào)用自身組件<com-child> template: ` <ul> <li v-for="(item,index) in list" :key="index"> <span>{{item.title}}</span> <com-child v-if="item.children" :list="item.children"></com-child> </li> </ul>`, props: ['list'] // 父組件傳遞來的數(shù)據(jù) } } } </script>
輸出結(jié)果:
3、應(yīng)用二:使用 keep-alive 時,搭配組件 name 進行緩存過濾
使用 keep-alive
時,可使用include
和exclude
依據(jù)name屬性
來指定:是否緩存組件。
動態(tài)組件keep-alive
與name屬性
關(guān)系看另一篇:
4、應(yīng)用三:vue-devtools 調(diào)試工具
vue-devtools 調(diào)試工具中,顯示的組見名稱由組件name屬性決定
好處:可看到組件名稱更好的定位
例:
5、獲取name屬性
this.$options.name
補充:需要特別注意的是
name的使用過程中報錯
[Vue warn]: Do not use built-in or reserved HTML elements as component id: ****
解決辦法:
在component里面注冊組件的時候避免用html已有的標(biāo)簽來接收組件;
import header from '@/components/header/header'; export default{ components: { 'header': header } };
總結(jié)
到此這篇關(guān)于vue中組件的name屬性含義和用法的文章就介紹到這了,更多相關(guān)vue組件name屬性用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue-loader中引入模板預(yù)處理器的實現(xiàn)
這篇文章主要介紹了vue-loader中引入模板預(yù)處理器的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09