WEB前端 vue学习二 组件之间的数据传递
?Vue 的組件作用域都是孤立的,不允許在子組件的模板內(nèi)直接引用父組件的數(shù)據(jù)。必須使用特定的方法才能實(shí)現(xiàn)組件之間的數(shù)據(jù)傳遞。
首先用 vue-cli 創(chuàng)建一個(gè)項(xiàng)目,其中 App.vue 是父組件,components 文件夾下都是子組件。
?
一、父組件向子組件傳遞數(shù)據(jù)
在 Vue 中,可以使用?props?向子組件傳遞數(shù)據(jù)。
?
子組件部分:
這是 header.vue 的 HTML 部分,logo 是在 data 中定義的變量。
如果需要從父組件獲取 logo 的值,就需要使用?props: ['logo']
在 props 中添加了元素之后,就不需要在 data 中再添加變量了
?
?父組件部分:
在調(diào)用組件的時(shí)候,使用 v-bind 將 logo 的值綁定為 App.vue 中定義的變量 logoMsg
?
然后就能將App.vue中 logoMsg 的值傳給 header.vue 了:
?
?
二、子組件向父組件傳遞數(shù)據(jù)
?子組件主要通過事件傳遞數(shù)據(jù)給父組件
?
子組件部分:
?
這是 login.vue 的 HTML 部分,當(dāng)<input>的值發(fā)生變化的時(shí)候,將 username 傳遞給 App.vue
首先聲明一個(gè)了方法?setUser,用 change 事件來調(diào)用 setUser
在 setUser 中,使用了?$emit?來遍歷?transferUser?事件,并返回 this.username
其中?transferUser?是一個(gè)自定義的事件,功能類似于一個(gè)中轉(zhuǎn),this.username?將通過這個(gè)事件傳遞給父組件?
?
父組件部分:
在父組件 App.vue 中,聲明了一個(gè)方法 getUser,用 transferUser 事件調(diào)用 getUser 方法,獲取到從子組件傳遞過來的參數(shù) username
?
getUser 方法中的參數(shù) msg 就是從子組件傳遞過來的參數(shù) username
?
三、子組件向子組件傳遞數(shù)據(jù)
Vue 沒有直接子對(duì)子傳參的方法,建議將需要傳遞數(shù)據(jù)的子組件,都合并為一個(gè)組件。如果一定需要子對(duì)子傳參,可以先從傳到父組件,再傳到子組件。
為了便于開發(fā),Vue 推出了一個(gè)狀態(tài)管理工具 Vuex,可以很方便實(shí)現(xiàn)組件之間的參數(shù)傳遞
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的WEB前端 vue学习二 组件之间的数据传递的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天气通怎么定位到当前位置(专业天气预报)
- 下一篇: WEB前端 Vue 全家桶介绍