Vue動態(tài)組件?component?:is的使用代碼示范
vue 動態(tài)組件用于實現(xiàn)在指定位置上,動態(tài)加載不同的組件,核心代碼為:
<component :is="componentTag"></component>
data() {
return {
componentTag: '',
}
}componentTag 為自定義的變量,將需要加載的組件名賦值給它,即可在<component />標簽出現(xiàn)的位置,渲染該組件。
代碼示范
<template>
<div style="padding: 30px">
<button @click="change('1')">組件1</button>
<button @click="change('2')">組件2</button>
<button @click="change('3')">組件3</button>
<component :is="componentTag"></component>
</div>
</template>
<script>
import component1 from './component1'
import component2 from './component2'
import component3 from './component3'
export default {
components: {component1, component2, component3},
data() {
return {
componentTag: '',
}
},
methods: {
change(index) {
this.componentTag = 'component' + index
},
}
}
</script>
<style scoped>
</style>src/page/component1.vue
<template>
<div>
<h3>組件1—文字</h3>
<span>我愛你,中國!</span>
</div>
</template>
<script>
export default {
name: "component1"
}
</script>
<style scoped>
</style>src/page/component2.vue
<template>
<div>
<h3>組件2-圖片</h3>
<img src="https://ss2.bdstatic.com/70cFvnSh.jpg" alt="">
</div>
</template>
<script>
export default {
name: "component2"
}
</script>
<style scoped>
</style>src/page/component3.vue
<template>
<div>
<h3>組件3—輸入框</h3>
<input type="text">
</div>
</template>
<script>
export default {
name: "component3"
}
</script>
<style scoped>
</style>效果展示
點擊按鈕組件1

點擊按鈕組件2

點擊按鈕組件3

以上內(nèi)容轉自:vue 動態(tài)組件【詳解】component :is
component :is用法進階之組件內(nèi)引入多個組件
<component :is="detailComponentName" />
import components from './components'
export default {
components: {
...components
}
}src/components/index.js
const ctx = require.context('./common', false, /\.vue$/)
const components = {}
console.log(ctx, 'ctx---打印出./common文件下(不包含子文件夾),以.vue結尾的文件')
console.log(
ctx.keys(),
'ctx.keys()---返回./common文件下(不包含子文件夾),以.vue結尾的文件的數(shù)組'
)
for (const key of ctx.keys()) {
// 剝?nèi)ノ募_頭的 `./` 和`.vue`結尾的擴展名
const module = key.replace(/^\.\//, '').replace(/\.vue$/, '')
components[module] = ctx(key).default
console.log(module, 'module---去掉`./`開頭 和`.vue`結尾后的文件名')
console.log(
components[module],
'components[module]---拿到ctx文件(包括html和default)'
)
}
console.log(components, 'components---這些ctx文件集合')
export default components此處解釋該index.js文件:
require.context( directory, useSubdirectories, regExp )
- directory{String}-讀取文件的路徑。
- useSubdirectories{Boolean}-是否遍歷文件的子目錄。
- regExp{RegExp}-匹配文件的正則。
require.context('./', false, /\.vue$/) 檢索components文件下的文件,不檢索子文件夾,匹配以.vue結尾的文件。




到此這篇關于Vue動態(tài)組件 component :is的使用的文章就介紹到這了,更多相關Vue component :is 使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue forEach循環(huán)數(shù)組拿到自己想要的數(shù)據(jù)方法
今天小編就為大家分享一篇vue forEach循環(huán)數(shù)組拿到自己想要的數(shù)據(jù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
基于vue-cli3+typescript的tsx開發(fā)模板搭建過程分享
這篇文章主要介紹了搭建基于vue-cli3+typescript的tsx開發(fā)模板,本文通過實例代碼截圖的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
vue.js element-ui validate中代碼不執(zhí)行問題解決方法
這篇文章主要介紹了vue.js element-ui validate中代碼不執(zhí)行問題解決方法,需要的朋友可以參考下2017-12-12

