Vue.js中使用道具方法demo
正文
在SPA中使用組件的局限性之一是你不能直接將數(shù)據(jù)從一個(gè)組件傳遞給另一個(gè)。基于組件的應(yīng)用程序背后的想法是,每個(gè)組件都被封裝起來,并擁有它所需要的所有數(shù)據(jù),以便工作;但有時(shí),我們確實(shí)需要一個(gè)不同組件之間的溝通渠道。
這就是Vue.js道具的作用--它們允許你將任何類型的數(shù)據(jù)從父組件傳遞給子組件。與React的props工作方式類似,這可以通過在子組件上設(shè)置prop屬性,并從父組件中傳入所需的數(shù)據(jù)來實(shí)現(xiàn)。這個(gè)過程實(shí)際上是非常簡單的,但如果你以前沒有使用過Vue.js,還是會有點(diǎn)困惑的。
在這篇文章中,我們將看看如何在Vue.js中使用props,以及使用它們的一些好處。讓我們開始吧!
什么是Vue.js中的props?
Props是你可以在一個(gè)子組件上設(shè)置的屬性,以便以從上到下的方式傳遞數(shù)據(jù)。在Vue項(xiàng)目中,props是單向的:它們只從父組件向子組件發(fā)送數(shù)據(jù)。這意味著父組件負(fù)責(zé)設(shè)置道具,而子組件只負(fù)責(zé)接收道具。
道具也是反應(yīng)式的:當(dāng)父組件更新一個(gè)道具時(shí),它也會自動(dòng)在子組件上更新。這可能非常有用,因?yàn)樗馕吨悴槐負(fù)?dān)心讓兩個(gè)組件保持同步--它們總是自動(dòng)更新。
那么,你為什么要使用props呢?
如果你已經(jīng)使用過任何其他基于組件的框架,如Angular或React,你可能已經(jīng)理解了父子溝通的需要。然而,如果你對這個(gè)概念不是很熟悉的話,有幾個(gè)原因可以說明你為什么要在Vue.js中使用props。
- 道具允許你保持你的組件的模塊化和可重復(fù)使用。
- 它們使你在應(yīng)用程序的不同部分之間分享數(shù)據(jù)變得容易。
- 在Vue.js中,props是一種將反應(yīng)式數(shù)據(jù)從父組件傳遞到子組件的簡單方法,有效地同步了它們。
如何在Vue.js中使用props?
我們已經(jīng)說服了你對props的需求嗎?讓我們開始使用它們吧在第一個(gè)例子中,我們將看看如何使用傳統(tǒng)的Options API來設(shè)置props,這也是大多數(shù)生產(chǎn)項(xiàng)目中仍在使用的。在文章的后面,我們將看到如何用新的、閃亮的Composition API完成同樣的過程。
在Vue.js中使用道具其實(shí)很簡單:你只需要在子組件上設(shè)置道具屬性,并將你想要接收的數(shù)據(jù)以字符串的形式傳入。
例如,假設(shè)我們有一個(gè)叫做App的父組件,它渲染了一個(gè)叫做Child的子組件。我們想把一條信息從App 傳給Child,這樣Child 就可以顯示它。為了做到這一點(diǎn),我們首先要在Child上設(shè)置 "消息 "道具,然后我們可以通過使用handlebars語法在我們的HTML中輸出它。
<!-- This is our child component --> <script> export default { props: ['message'] } </script> <template> <p>This is my message: {{message}}</p> </template>
然后,我們在App 組件中使用v-bind屬性,添加實(shí)際的道具。作為縮寫,我們可以直接使用": "符號。
<!-- This is our parent component --> <template> <ChildComponent :message="message" /> </template> <script> export default { data() { return { message: "Hello World" } } } </script>
這將直接把信息從App傳達(dá)給Child,有效地輸出以下文本。
This is my message: Hello World
如果我們想傳遞多個(gè)道具,過程非常相似:我們只需要在子組件中把它們設(shè)置成一個(gè)數(shù)組,像這樣。
<!-- This is our child component --> <script> export default { props: ['message', 'name'] } </script> <template> <p>{{message}}, {{name}}</p> </template>
<!-- This is our parent component --> <template> <ChildComponent :message="message" :name="name" /> </template> <script> export default { data() { return { message: "Welcome", name: "Alex" } } } </script>
這將輸出以下結(jié)果。
Welcome, Alex
這就是它的全部內(nèi)容了!使用Options API設(shè)置道具是非常簡單和直接的。
在Vue中使用props與Composition API
現(xiàn)在讓我們看看同樣的過程在Composition API中是怎樣的。你會很快注意到,HTML方面的東西是完全一樣的;我們只需要重寫我們的JS代碼,以適應(yīng)基于組合的項(xiàng)目中的新的做事方式。
因此,我們的子組件最終會是這樣的。
<!-- This is our child component --> <script setup> defineProps(['message', 'name']) </script> <template> <p>{{message}}, {{name}}</p> </template>
<!-- This is our parent component --> <template> <ChildComponent :message="message" :name="name" /> </template> <script setup> import { ref } from "vue"; const message = ref("Welcome"); const name = ref("Alex"); </script>
在Vue.js項(xiàng)目中使用道具的最終想法
正如你所看到的,props是在Vue.js應(yīng)用程序的不同部分之間共享數(shù)據(jù)的一種非常簡單而強(qiáng)大的方式。如果你還不相信它們的有用性,我們鼓勵(lì)你花點(diǎn)時(shí)間自己去試驗(yàn)一下。
我們希望這篇文章能幫助你了解道具在Vue.js中的工作原理,更多關(guān)于Vue.js道具使用的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue-better-scroll 的使用實(shí)例代碼詳解
這篇文章主要介紹了vue-better-scroll 的使用實(shí)例代碼詳解,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12Vue響應(yīng)式原理與虛擬DOM實(shí)現(xiàn)步驟詳細(xì)講解
在Vue中最重要、最核心的概念之一就是響應(yīng)式系統(tǒng)。這個(gè)系統(tǒng)使得Vue能夠自動(dòng)追蹤數(shù)據(jù)變化,并在數(shù)據(jù)發(fā)生變化時(shí)自動(dòng)更新相關(guān)的DOM元素。本文將會探討Vue響應(yīng)式系統(tǒng)的實(shí)現(xiàn)原理及其底層實(shí)現(xiàn)2023-03-03ant-design-vue導(dǎo)航菜單a-menu的使用解讀
這篇文章主要介紹了ant-design-vue導(dǎo)航菜單a-menu的使用解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10vue axios請求成功卻進(jìn)入catch的原因分析
這篇文章主要介紹了vue axios請求成功卻進(jìn)入catch的原因分析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09vue如何實(shí)現(xiàn)二進(jìn)制流文件導(dǎo)出excel
這篇文章主要介紹了vue如何實(shí)現(xiàn)二進(jìn)制流文件導(dǎo)出excel,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06vue+swiper實(shí)現(xiàn)側(cè)滑菜單效果
這篇文章主要為大家詳細(xì)介紹了vue+swiper實(shí)現(xiàn)側(cè)滑菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12vue按需加載組件webpack require.ensure的方法
本篇文章主要介紹了vue按需加載組件webpack require.ensure的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Vue router/Element重復(fù)點(diǎn)擊導(dǎo)航路由報(bào)錯(cuò)問題及解決
這篇文章主要介紹了Vue router/Element重復(fù)點(diǎn)擊導(dǎo)航路由報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07vue 導(dǎo)航內(nèi)容設(shè)置選中狀態(tài)樣式的例子
今天小編就為大家分享一篇vue 導(dǎo)航內(nèi)容設(shè)置選中狀態(tài)樣式的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11前端Vue中常用rules校驗(yàn)規(guī)則(輪子)如電話身份證郵箱等校驗(yàn)方法例子
當(dāng)我們在開發(fā)應(yīng)用時(shí)經(jīng)常需要對表單進(jìn)行校驗(yàn),以確保用戶輸入的數(shù)據(jù)符合預(yù)期,這篇文章主要給大家介紹了關(guān)于前端Vue中常用rules校驗(yàn)規(guī)則(輪子)如電話身份證郵箱等校驗(yàn)方法的相關(guān)資料,需要的朋友可以參考下2023-12-12