⑨ Vue元件的使用 - Component
技術標籤:Vue學習筆記vuejavascriptjsvue.js
目錄:
Vue中的元件
這部分內容將分為以下五節:
- 元件的使用
- 元件之間的傳參
- 元件之間的事件傳遞
- 插槽
- 動態元件和非同步元件
前言:在單頁面應用開發中,大多數情況下只有一個html頁面,那麼單頁面的頁面跳轉,其實就是各元件之間的切換,那麼這個元件其實就充當的是一個一個獨立的html頁面的角色,只不過這個元件之間可以複用,傳值,隨意呼叫,在vue中通常由(vue-router)和元件(component)來配合完成,那麼這個component就是我們下來將要學習的元件。
什麼是元件?
官方說元件是可複用的 Vue 例項,且帶有一個名字,它與 new Vue
擁有相同的選項,比如它擁有生命週期鉤子、data
、computed
、methods
等,與 new Vue
的唯一區別是不擁有 el
這樣的根例項選項。
註冊元件的兩種方式
全域性註冊
Vue.component('my-component-name', {/*...*/})
區域性註冊
var ComponentA = { /*....*/ }
new Vue({
el: '#app',
components: {
'component-a': ComponentA
}
})
無論是全域性註冊還是區域性註冊,每個元件都需要有個名字。比如在全域性註冊的my-component-name
component-a
都是元件的名稱,元件名稱推薦的命名方式
hello-word
的方式,也就是字母全小寫,不同字母使用連字元。
全域性註冊元件的使用場景
<div id="app">
<btn-success></btn-success>
</div>
<script type="text/javascript">
Vue.component('btn-success', {
template: '<div> <button class="btn-success" @click="onSuccessClick">成功</button> </div>' ,
methods:{
onSuccessClick: function(){
alert('點選了Success按鈕');
}
}
});
var vm = new Vue({
el: "#app",
})
</script>
上面的案例中我們註冊了一個全域性元件btn-success
,可以看到我們為這個元件提供了一個模板template
,這個模板裡的內容其實就是這個元件最終要渲染的內容,並給它添加了一個點選事件 onSuccessClick
,點選btn-success
就會觸發 onSuccessClick
方法。
這就是一個單獨模組,它可以獨立去維護自己的點選事件以及生命週期鉤子,當我們需要使用它時,只需要通過 <btn-success></btn-success>
標籤名的方式就可以把它展示在我們的 el
中,在使用VueCli構建工具開發的時候,元件將會被拆分成.vue
字尾的單獨檔案,並且各個元件相互獨立,互不干擾。
需要注意的是,元件中的data選項的指向不再是一個物件
{}
,而變成了一個方法funvtion(){return {}}
,並通過return
返回一個獨立的物件。
舉個例子