本文介紹了如何在Vue.js中引用組件中的HTML元素。您可以通過(guò)使用Vue路由器或創(chuàng)建動(dòng)態(tài)組件來(lái)切換視圖或組件模板。
寧安網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站2013年至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。Vue路由器用于在DOM中的視圖或組件模板之間導(dǎo)航。要使用Vue路由器,請(qǐng)?jiān)趓oute組件中定義路由,并向Vue表明應(yīng)該在事件(如單擊)上掛載新組件。
這是處理用戶界面內(nèi)的邊欄和菜單組件中的導(dǎo)航的正確方法。
如果您希望在DOM中掛載的兩個(gè)任意組件之間進(jìn)行切換而不需要?jiǎng)?chuàng)建路由,那么您可能需要使用動(dòng)態(tài)組件。
動(dòng)態(tài)組件
Vue動(dòng)態(tài)組件允許用戶在兩個(gè)或多個(gè)組件之間進(jìn)行切換而無(wú)需路由,甚至在切換回初始組件時(shí)保留數(shù)據(jù)狀態(tài)。
其核心思想是讓用戶在不使用路由器的情況下動(dòng)態(tài)地掛載和卸載用戶界面中的組件。
為什么動(dòng)態(tài)組件很重要?
在設(shè)計(jì)用戶界面時(shí),您需要某種形式的靈活性來(lái)顯示或隱藏基于應(yīng)用程序狀態(tài)的嵌套組件。動(dòng)態(tài)組件以高效、簡(jiǎn)單的方式提供了這個(gè)平臺(tái)。
該特性為您節(jié)省了大量代碼,因?yàn)槟梢允褂?code>v-if和v-else
等Vue條件結(jié)構(gòu)輕松實(shí)現(xiàn)動(dòng)態(tài)組件。您可以使用條件結(jié)構(gòu)來(lái)實(shí)現(xiàn)動(dòng)態(tài)組件,方法是使用占位符來(lái)輕松地將邏輯綁定到組件。
這種方法可以確保您的演示始終是干凈和明確的。
才能在Vue中創(chuàng)建動(dòng)態(tài)組件。在你的電腦中,你將需要以下資料:
已安裝Node.js版本10.x及更高版本。 您可以通過(guò)在終端/命令提示符下運(yùn)行以下命令來(lái)驗(yàn)證您是否擁有Node.js 10.x版:
node -v
一個(gè)代碼編輯器(推薦使用Visual Studio)。
Vue的最新版本,已全局安裝在您的計(jì)算機(jī)上。
您的計(jì)算機(jī)上已安裝Vue CLI 3.0。 為此,請(qǐng)先卸載舊的CLI版本:
npm uninstall -g vue-cli
然后,安裝一個(gè)新的:
npm install -g @vue/cli
動(dòng)態(tài)組件的語(yǔ)法
Vue為動(dòng)態(tài)組件提供了一個(gè)特殊的模板元素,簡(jiǎn)稱為component
。語(yǔ)法是這樣的:
<component v-bind:is=”currentComponent”></component>
組件元素也可以是一個(gè)自關(guān)閉標(biāo)簽:
<component v-bind:is=”currentComponent”/>
第一個(gè)選項(xiàng)最適合瀏覽兼容性。
演示
下載starter項(xiàng)目并在VS代碼中打開它,以獲得一些動(dòng)態(tài)組件的示例。starter
項(xiàng)目允許您訪問(wèn)一個(gè)現(xiàn)有的測(cè)試組件,創(chuàng)建第二個(gè)測(cè)試組件,并在兩者之間進(jìn)行切換。
導(dǎo)航到components
文件夾并創(chuàng)建一個(gè)新文件。 將文件命名為Test2.vue
并將以下代碼塊復(fù)制到文件中:
<template> <div><h1>I am Test 2</h1> </div> </template> <script> export default { name: 'Test2', props: { msg: String } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> h3 { margin: 40px 0 0; } ul { list-style-type: none; padding: 0; } li { display: inline-block; margin: 0 10px; } a { color: #42b983; } </style>
現(xiàn)在您有了第二個(gè)組件,轉(zhuǎn)到App.vue
文件并注冊(cè)該組件:
<template> <div id="app"> <img alt="Vue logo" src="./assets/logo.png"> <Test /> <Test2 /> </div> </template> <script> import Test from './components/Test.vue' import Test2 from './components/Test2.vue' export default { name: 'app', components: { Test, Test2 } } </script>
兩個(gè)測(cè)試組件現(xiàn)在嵌套在根應(yīng)用程序組件中。如果只想掛載一個(gè)組件,然后動(dòng)態(tài)切換到另一個(gè)組件,則必須創(chuàng)建一個(gè)動(dòng)態(tài)組件。
將下面的代碼塊復(fù)制到app.vue
文件的模板部分:
<template> <div id="app"> <img alt="Vue logo" src="./assets/logo.png"> <component is="Test" /> </div> </template>
接下來(lái),使用以下serve
命令運(yùn)行應(yīng)用程序:
npm run serve
您將看到只顯示Test 1
組件。
如果僅在模板中指定了Test 1
元素,這正是您將獲得的響應(yīng)。 為了使組件具有動(dòng)態(tài)性,我們可以使用v-bind
指令將其綁定到set屬性。
<template> <div id="app"> <img alt="Vue logo" src="./assets/logo.png"> <component v-bind:is="component" /> </div> </template> <script> import Test from './components/Test.vue' import Test2 from './components/Test2.vue' export default { name: 'app', components: { Test, Test2 }, data (){ return { component:"Test" } } } </script>
您的組件現(xiàn)在與數(shù)據(jù)中的組件屬性綁定。如果您將組件切換到Test2
,它將自動(dòng)掛載Test2
組件。
在瀏覽器上測(cè)試一下。
添加方法調(diào)用
您可以添加方法調(diào)用來(lái)控制組件動(dòng)態(tài)顯示的邏輯。組件元素允許您訪問(wèn)Vue實(shí)例中的每個(gè)構(gòu)造。
下面是一個(gè)切換這兩個(gè)組件的小方法的例子:
<template> <div id="app"> <img alt="Vue logo" src="./assets/logo.png"> <component v-bind:is="component" /> <button v-on:click="toggle">Toggle</button> </div> </template> <script> import Test from './components/Test.vue' import Test2 from './components/Test2.vue' export default { name: 'app', components: { Test, Test2 }, data (){ return { component:"Test2" } }, methods: { toggle(){ if (this.component === Test) { this.component = Test2; } else { this.component = Test; } } } } </script>
切換時(shí)保持?jǐn)?shù)據(jù)值有效
在Vue團(tuán)隊(duì)構(gòu)建這個(gè)特性時(shí),他們選擇擴(kuò)展它的功能,包括存儲(chǔ)每個(gè)狀態(tài)的數(shù)據(jù)值。
為了存儲(chǔ)這些數(shù)據(jù),Vue提供了一個(gè)名為keep-alive
的模板元素。使用keep-alive
,您可以確保在從一個(gè)組件切換回另一個(gè)組件后,您的組件狀態(tài)保持原樣。
例如,如果您單擊某個(gè)鏈接或在文本框中輸入一個(gè)值,然后切換組件,那么keep-alive
會(huì)將您帶回到切換回來(lái)時(shí)使用的相同鏈接或文本框。
要啟用keep-alive
,請(qǐng)轉(zhuǎn)到app.vue
文件的模板部分,并使用keep-alive
元素包裝組件元素:
<keep-alive> <component v-bind:is="component" /> </keep-alive>
要查看它是否工作,請(qǐng)將表單元素添加到測(cè)試中。vue文件,在模板部分添加如下代碼塊:
<template> <div><h1>I am Test 1</h1> <form> First name:<br> <input type="text" name="firstname"><br> Last name:<br> <input type="text" name="lastname"> </form> </div> </template>
保存所有項(xiàng)目文件后,再次運(yùn)行應(yīng)用程序。在輸入框中鍵入,切換組件,并切換回原始組件。您將注意到在切換組件之前輸入的值與之前輸入的值完全相同。
結(jié)論
本文介紹了如何在Vue.js工作流中使用動(dòng)態(tài)組件。您現(xiàn)在還可以通過(guò)keep-alive擴(kuò)展組件元素的能力。
相關(guān)推薦:
2020年前端vue面試題大匯總(附答案)
vue教程推薦:2020最新的5個(gè)vue.js視頻教程精選
更多編程相關(guān)知識(shí),請(qǐng)?jiān)L問(wèn):編程入門??!
當(dāng)前題目:Vue.js中使用動(dòng)態(tài)組件的方法
網(wǎng)站地址:http://www.rwnh.cn/article42/chceec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、用戶體驗(yàn)、網(wǎng)站營(yíng)銷、云服務(wù)器、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)