VUE組件傳參超詳細(xì)講解
Vue.cli 中怎樣使用自定義的組件
第一步:在 components 目錄新建你的組件文件(CounterCom.vue)
,script一定要export default {}
第二步:在需要用的頁面(組件)中導(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ù)
子組件通過 Vue 實(shí)例方法 $emit 進(jìn)行觸發(fā)并且可以攜帶參數(shù),父組件監(jiān)聽使 用@(v-on)進(jìn)行監(jiān)聽,然后進(jìn)行方法處理
非父子組件之間傳遞數(shù)據(jù)
1、引入第三方 new Vue 定義為 eventBus
2、在組件中 created 中訂閱方法 eventBus.$on("自定義事件名",methods 中的方法名)
3、在另一個(gè)兄弟組件中的 methods 中寫函數(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:把傳過來的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固定寫法,事件的值(counterchange事件的值,也是數(shù)組的第二個(gè)參數(shù))
Vue組件data為什么必須是函數(shù)
1、每個(gè)組件都是 Vue 的實(shí)例。
2、組件共享 data 屬性,當(dāng) data 的值是同一個(gè)引用類型的值時(shí),改變 其中一個(gè)會(huì)影響其他
3、組件中的 data 寫成一個(gè)函數(shù),數(shù)據(jù)以函數(shù)返回值形式定義,這樣每復(fù)用 一次組件,就會(huì)返回一份新的 data,類似于給每個(gè)組件實(shí)例創(chuàng)建一個(gè)私 有的數(shù)據(jù)空間,讓各個(gè)組件實(shí)例維護(hù)各自的數(shù)據(jù)。而單純的寫成對(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ī) 范中的自定義組件名 (字母全小寫且必須包含一個(gè)連字符),避免和當(dāng)前以及未 來的 HTML 元素相沖突
Vue 組件里的定時(shí)器要怎么銷毀
如果頁面上有很多定時(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)};
如果頁面只有單個(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)文章
Vuex中mutations和actions的區(qū)別及說明
這篇文章主要介紹了Vuex中mutations和actions的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Vue項(xiàng)目中如何運(yùn)用vuex的實(shí)戰(zhàn)記錄
如果說是JQuery是手工作坊,那么Vue.js就像是一座工廠,雖然Vue.js做的任何事情JQuery都可以做,但無論是代碼量還是流程規(guī)范性都是前者較優(yōu),下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中如何運(yùn)用vuex的相關(guān)資料,需要的朋友可以參考下2021-09-09VUEJS實(shí)戰(zhàn)之利用laypage插件實(shí)現(xiàn)分頁(3)
這篇文章主要為大家詳細(xì)介紹了VUEJS實(shí)戰(zhàn)之修復(fù)錯(cuò)誤并且美化時(shí)間,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06vue 雙向數(shù)據(jù)綁定的實(shí)現(xiàn)學(xué)習(xí)之監(jiān)聽器的實(shí)現(xiàn)方法
這篇文章主要介紹了vue 雙向數(shù)據(jù)綁定的實(shí)現(xiàn)學(xué)習(xí)之監(jiān)聽器的實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11vue倒計(jì)時(shí)刷新頁面不會(huì)從頭開始的解決方法
在本篇文章里小編給大家整理的是關(guān)于vue倒計(jì)時(shí)刷新頁面不會(huì)從頭開始的解決方法,需要的朋友們參考下。2020-03-03