Vue(11)組件化的基本使用
前言
有時候有一組html
結構的代碼,並且這個上面可能還綁定了事件。然後這段代碼可能有多個地方都被使用到了,如果都是拷貝來拷貝去,很多代碼都是重複的,包括事件部分的代碼都是重複的。那麼這時候我們就可以把這些代碼封裝成一個組件,以後在使用的時候就跟使用普通的html
元素一樣,拿過來用就可以了。
基本使用
<div id="app">
<button-counter></button-counter>
<button-counter></button-counter>
<button-counter></button-counter>
</div>
<script>
// 定義一個名為 button-counter 的新組件
Vue.component('ButtonCounter', {
data: function () {
return {
count: 0
}
},
template: '<button @click="count++">點擊了{{ count }}次</button>'
})
const app = new Vue({
el: "#app",
data: {
message: "hello"
}
})
</script>
以上我們創建了一個叫做button-counter
的組件,這個組件實現了能夠記錄點擊了多少次按鈕的功能。後期如果我們想要使用,就直接通過button-counter
使用就可以了。然後因為組件是可復用的Vue
實例,所以它們與new Vue
接收相同的選項,例如data
、computed
、watch
、methods
以及生命周期鉤子等。僅有的例外是像el
這樣根實例特有的選項。另外需要注意的是:組件中的data
必須為一個函數!
我們來看下實現的效果
我們上面使用了3次button-counter
組件,所以頁面會顯示3個,並且每個組件都會各自獨立維護它的 count
,因為你每用一次組件,就會有一個它的新實例被創建。每個實例可以維護一份被返回對象的獨立的拷貝,這就是我們data
中使用函數的原因