VUE組件傳參超詳細(xì)講解
Vue.cli 中怎樣使用自定義的組件
第一步:在 components 目錄新建你的組件文件(CounterCom.vue),script一定要export default {}
第二步:在需要用的頁(yè)面(組件)中導(dǎo)入:
import CounterCom from './components/CounterCom.vue'
第三步 : 注 入 到 Vue 的子組件的 components 屬性上面,
components:{CounterCom}
第四步:在 template 視圖 view 中使用
<CounterCom ></CounterCom>
<counter-com></counter-com>
Vue 組件如何進(jìn)行傳值的
父組件向子組件傳遞數(shù)據(jù)
父組件內(nèi)設(shè)置要傳的數(shù)據(jù),在父組件中引用的子組件上綁定一個(gè)自定義屬 性并把數(shù)據(jù)綁定在自定義屬性上,在子組件添加參數(shù) props 接收即可
子組件向父組件傳遞數(shù)據(jù)
子組件通過(guò) Vue 實(shí)例方法 $emit 進(jìn)行觸發(fā)并且可以攜帶參數(shù),父組件監(jiān)聽(tīng)使 用@(v-on)進(jìn)行監(jiān)聽(tīng),然后進(jìn)行方法處理
非父子組件之間傳遞數(shù)據(jù)
1、引入第三方 new Vue 定義為 eventBus
2、在組件中 created 中訂閱方法 eventBus.$on("自定義事件名",methods 中的方法名)
3、在另一個(gè)兄弟組件中的 methods 中寫(xiě)函數(shù),在函數(shù)中發(fā)布 eventBus 訂 閱的方法 eventBus.$emit("自定義事件名”)
4、在組件的 template 中綁定事件(比如 click)
父?jìng)髯永?/h4>
使用props
父?jìng)鹘o子的數(shù)組是只讀的(做默認(rèn)值,讀取顯示)
不能進(jìn)行修改
App.vue文件中
<CounterCom :num="365"></CounterCom>
CounterCom.vue組件中
//01接收參數(shù)并定義默認(rèn)值
props:{
"num":{type:Number,default:1},
}
//02使用參數(shù)num
data() {
//02 使用num:把傳過(guò)來(lái)的num賦值給counter
return {
counter: this.num
}
}具體示例如下:

子傳父例子
使用的事件 $emit
CounterCom.vue組件中
<button class="active" @click="counter++;$emit('counterchange',counter)">
{{counter}}
</button>App.vue
<counter-com @counterchange="n=$event"></counter-com>
$emit(事件名,事件值) 子組件主動(dòng)觸發(fā)一個(gè)事件,并傳遞一個(gè)位置,事件名(counterchange)和事件值(counter)是自定義的
$event固定寫(xiě)法,事件的值(counterchange事件的值,也是數(shù)組的第二個(gè)參數(shù))

Vue組件data為什么必須是函數(shù)
1、每個(gè)組件都是 Vue 的實(shí)例。
2、組件共享 data 屬性,當(dāng) data 的值是同一個(gè)引用類型的值時(shí),改變 其中一個(gè)會(huì)影響其他
3、組件中的 data 寫(xiě)成一個(gè)函數(shù),數(shù)據(jù)以函數(shù)返回值形式定義,這樣每復(fù)用 一次組件,就會(huì)返回一份新的 data,類似于給每個(gè)組件實(shí)例創(chuàng)建一個(gè)私 有的數(shù)據(jù)空間,讓各個(gè)組件實(shí)例維護(hù)各自的數(shù)據(jù)。而單純的寫(xiě)成對(duì)象形式, 就使得所有組件實(shí)例共用了一份 data,就會(huì)造成一個(gè)變了全都會(huì)變的結(jié) 果。
組件的命名規(guī)范
給組件命名有兩種方式
一種是使用鏈?zhǔn)矫?my-component
一種是使用大駝峰命名 MyComponent
在 字 符 串 模 板 中
<my-component></my-component>
和
<MyComponent></MyComponent>都可以使用, 在非字符串模板中最好使用<MyComponent></MyComponent>,因?yàn)橐裱?W3C 規(guī) 范中的自定義組件名 (字母全小寫(xiě)且必須包含一個(gè)連字符),避免和當(dāng)前以及未 來(lái)的 HTML 元素相沖突
Vue 組件里的定時(shí)器要怎么銷毀
如果頁(yè)面上有很多定時(shí)器,可以在 data 選項(xiàng)中創(chuàng)建一個(gè)對(duì)象 timer, 每個(gè)定時(shí)器取個(gè)名字一一映射在對(duì)象 timer 中, 在 beforeDestroy 構(gòu)造函數(shù)中
for(let k in this.timer){clearInterval(k)};如果頁(yè)面只有單個(gè)定時(shí)器,可以這么做。
const timer = setInterval(() =>{}, 500);
this.$once('hook:beforeDestroy', () => {
clearInterval(timer);
})到此這篇關(guān)于VUE組件傳參超詳細(xì)講解的文章就介紹到這了,更多相關(guān)VUE組件傳參內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VUE動(dòng)態(tài)生成word的實(shí)現(xiàn)
這篇文章主要介紹了VUE動(dòng)態(tài)生成word的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
vue基于Element按鈕權(quán)限實(shí)現(xiàn)方案
這篇文章主要介紹了vue基于Element按鈕權(quán)限實(shí)現(xiàn)方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Vue.js最佳實(shí)踐(五招助你成為vuejs大師)
這篇文章主要介紹了Vue.js最佳實(shí)踐,本文主要面向?qū)ο笫怯幸欢╲ue.js 編輯經(jīng)驗(yàn)的開(kāi)發(fā)者,需要的朋友可以參考下2018-05-05
Vue Element UI 表單自定義校驗(yàn)規(guī)則及使用
這篇文章主要介紹了Vue Element UI 表單自定義效驗(yàn)規(guī)則及使用,文中通過(guò)代碼介紹了常見(jiàn)表單效驗(yàn)規(guī)則,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
vue3中reactive和ref的實(shí)現(xiàn)與區(qū)別詳解
reactive和ref都是vue3實(shí)現(xiàn)響應(yīng)式系統(tǒng)的api,他們是如何實(shí)現(xiàn)響應(yīng)式的呢,reactive和ref又有什么區(qū)別呢,下面小編就來(lái)和大家詳細(xì)講講,希望對(duì)大家有所幫助2023-10-10

