Vue.js組件使用props傳遞數(shù)據(jù)的方法
本文實例為大家分享了Vue.js使用props傳遞數(shù)據(jù)的具體代碼,供大家參考,具體內(nèi)容如下
基本用法
通常父組件的模板中包含子組件,父組件要正向地向子組件傳遞數(shù)據(jù)或參數(shù),子組件接收到后根據(jù)參數(shù)的不同來渲染不同的內(nèi)容或執(zhí)行操作。這個正向傳遞數(shù)據(jù)的過程就是通過props來實現(xiàn)的。
在組件中,使用選項props來聲明需要從父級接收的數(shù)據(jù),props的值可以是兩種,一種是字符串?dāng)?shù)組,一種是對象。
示例:構(gòu)造一個數(shù)組,接收一個來自父組件的message,并把它再組件模板中渲染
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src="https://unpkg.com/vue/dist/vue.js"></script> <title>props</title> </head> <body> <div id="myApp"> <my-component message="來自父組件的數(shù)據(jù)"></my-component> </div> <script> Vue.component('my-component',{ props: ['message'], template: '<div>{{message}}</div>' }); var myApp = new Vue({ el: '#myApp' }); </script> </body> </html>
props中聲明的數(shù)據(jù)與組件函數(shù)return的數(shù)據(jù)主要區(qū)別是:**props的數(shù)據(jù)來自父級,而data中的數(shù)據(jù)是組件自己的數(shù)據(jù),作用域是組件本身。**這兩種數(shù)據(jù)都可以在模板template及計算屬性computed和方法methods中使用。
上例的數(shù)據(jù)message就是通過props從父級傳遞過來的,在組件的字的那個一標(biāo)簽上直接寫該props的名稱,如果要傳遞多個數(shù)據(jù),在props數(shù)組中添加項即可。
注意:由于HTML特性不區(qū)分大小寫,當(dāng)使用DOM模板時,駝峰命名的props名稱要轉(zhuǎn)為短橫分割命名,例如:
<div id="app"> <my-component warning-text="提示信息"></my-component> </div> <script> //如果使用字符串模板,可以忽略這些限制 Vue.component('my-component',{ props: ['warningText'], template: '<div>{{warningText}}</div>' }); var app = new Vue({ el: '#app' }); </script>
有時候,傳遞的數(shù)據(jù)并不是直接寫死的,而是來自父級的動態(tài)數(shù)據(jù),這時候可以使用指令v-bing來動態(tài)綁定props的值,當(dāng)父組件的數(shù)據(jù)變化時,也會傳遞給子組件。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src="https://unpkg.com/vue/dist/vue.js"></script> <title>動態(tài)綁定</title> </head> <body> <div id="app"> <input type="text" v-model="parentMessage"> <my-component :message="parentMessage"></my-component> </div> <script> Vue.component('my-component',{ props: ['message'], template: '<div>{{message}}</div>' }); var app = new Vue({ el: '#app', data: { parentMessage: '' } }); </script> </body> </html>
上例使用v-model綁定了父級的數(shù)據(jù)parentMessage,當(dāng)通過輸入框任意輸入時,子組件接受到的props "message"也會實時響應(yīng),并更新組件模板。
更多教程點擊《Vue.js前端組件學(xué)習(xí)教程》,歡迎大家學(xué)習(xí)閱讀。
關(guān)于vue.js組件的教程,請大家點擊專題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
el-input寬度跟隨輸入內(nèi)容自適應(yīng)的實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于el-input寬度跟隨輸入內(nèi)容自適應(yīng)的實現(xiàn)方法,我們再實際應(yīng)用中可能需要input文本框能夠根據(jù)輸入字符的所占據(jù)的寬度自動調(diào)節(jié)尺寸,需要的朋友可以參考下2023-08-08vue?elementui二次封裝el-table帶插槽問題
這篇文章主要介紹了vue?elementui二次封裝el-table帶插槽問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08vue打包上傳服務(wù)器加載提示錯誤Loading chunk {n} failed
這篇文章主要為大家介紹了vue打包上傳服務(wù)器加載提示錯誤Loading chunk {n} failed解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Vue3學(xué)習(xí)筆記之依賴注入Provide/Inject
provide和inject可以實現(xiàn)嵌套組件之間進(jìn)行傳遞數(shù)據(jù),這兩個函數(shù)都是在setup函數(shù)中使用的,下面這篇文章主要給大家介紹了關(guān)于Vue3學(xué)習(xí)筆記之依賴注入Provide?/?Inject的相關(guān)資料,需要的朋友可以參考下2023-05-05Vue.js實現(xiàn)簡單ToDoList 前期準(zhǔn)備(一)
這篇文章主要介紹了Vue.js實現(xiàn)簡單ToDoList的前期準(zhǔn)備,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12詳解Vue基于vue-quill-editor富文本編輯器使用心得
這篇文章主要介紹了Vue基于vue-quill-editor富文本編輯器使用心得,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01