1. 概述
暗示效應告訴我們:
巧妙的暗示會在不知不覺中剝奪我們的判斷力,對我們的思維形成一定的影響,造成我們行為的些許改變或者偏差。
例如你的朋友說你臉色不太好,是不是病了,此時,你可能就會感覺渾身不舒服、頭重腳輕,想趕緊去看醫生。
而如果你的朋友對你說你臉色不太好,應該是沒睡好,屬於正常現象,一會中午吃點好的,再睡個午覺就沒事了,你可能就會感覺只是小事情,不會去在意。
積極的暗示,是有利於身心健康的,因此我們要時刻保持正能量,多對自己做積極的暗示。
言歸正傳,今天我們來聊聊 VUE 的動態元件。
2. 動態元件
2.1 一個簡單的提交例子
<body> <div id="myDiv"></div> </body> <script> const app = Vue.createApp({ template:` <my-input /> <my-div /> <button>提交</button> ` }); app.component("my-input", { template: ` <input /> ` }); app.component("my-div", { template: ` <div> 提交成功 </div> ` }); const vm = app.mount("#myDiv");
這是一個簡單的提交例子,需要實現的效果是:“提交成功”幾個字先隱藏,我們在文字框中填寫內容,點選提交按鈕,文字框隱藏,顯示“提交成功”幾個字,按鈕由【提交】變為【重新編輯】
當點選【重新編輯】時,文字框顯示,“提交成功”幾個字隱藏,按鈕由【重新編輯】變為【提交】
2.2 使用 v-show 實現
我們們先使用之前學的 v-show 的語法實現上面的需求
const app = Vue.createApp({ data() { return { showCom : "my-input", buttonName : "提交" } }, methods : { changeInputStatus() { if(this.showCom === 'my-input') { this.showCom = "my-div"; this.buttonName = "重新編輯"; } else { this.showCom = "my-input"; this.buttonName = "提交"; } } }, template:` <my-input v-show="showCom === 'my-input'" /> <my-div v-show="showCom === 'my-div'" /> <button @click="changeInputStatus">{{buttonName}}</button> ` }); app.component("my-input", { template: ` <div> <input /> </div> ` }); app.component("my-div", { template: ` <div> 提交成功 </div> ` });
很明顯,用 v-show 的語法是可以實現的,我們只需修改 data 中的 showCom 的值,就能實現元件的隱藏和顯示
2.3 使用動態元件實現
const app = Vue.createApp({ data() { return { showCom : "my-input", buttonName : "提交" } }, methods : { changeInputStatus() { if(this.showCom === 'my-input') { this.showCom = "my-div"; this.buttonName = "重新編輯"; } else { this.showCom = "my-input"; this.buttonName = "提交"; } } }, template:` <component :is="showCom" /> <button @click="changeInputStatus">{{buttonName}}</button> ` });
使用 <component :is="showCom" /> 動態元件標籤,將元件與資料 showCom 繫結,showCom 的值,必須是元件的名字,名字是哪個元件,component 就轉變成哪個元件
但似乎有點問題,點選【重新編輯】重新顯示文字框後,文字框中輸入的內容不見了,我們希望文字框中的內容還在
2.4 使用動態元件實現,保留文字框內容
const app = Vue.createApp({ data() { return { showCom : "my-input", buttonName : "提交" } }, methods : { changeInputStatus() { if(this.showCom === 'my-input') { this.showCom = "my-div"; this.buttonName = "重新編輯"; } else { this.showCom = "my-input"; this.buttonName = "提交"; } } }, template:` <keep-alive> <component :is="showCom" /> </keep-alive> <button @click="changeInputStatus">{{buttonName}}</button> ` });
在 component 標籤外面包裹一層 keep-alive 標籤,文字框的內容就可以保留了
3. 綜述
今天聊了一下 VUE3 的 動態元件的使用,希望可以對大家的工作有所幫助,下一節我們繼續講元件的相關知識,敬請期待
歡迎幫忙點贊、評論、轉發、加關注 :)
關注追風人聊Java,每天更新Java乾貨。
4. 個人公眾號
追風人聊Java,歡迎大家關注