vue封裝一個組件(進階必學)


相比較於函數的封裝,規模更大一點的便是組件的封裝,組件包含了模版、腳本以及樣式的代碼,在實際開發中組件的使用頻率也是非常大的,我們項目中的每一個頁面其實都可以看作是一個父組件,其可以包含很多子組件,子組件通過接收父組件的值來渲染頁面,父組件通過響應子組件的回調來觸發事件。

 

封裝一個組件主要包含兩種方式,一種是最常見的整體封裝,用戶通過改變數據源來呈現不同的頁面狀態,代碼結構不可定制化。例如:
```html
<div>
    <my-component data="我是父組件傳入子組件的數據"></my-component>
</div>
```
另一種便是自定義封裝,也就是插槽(slot),我們可以開放一部分槽位給父組件,使其能夠進行一定程度的定制化,例如:
```html
<div>
    <my-component data="我是父組件傳入子組件的數據">
        <template slot="customize">
            <span>這是定制化的數據</span>
        </template>
    </my-component>
</div>
```
在 myComponent 組件中我們便可以接收對應的 slot:
```html
<div class="container">
    <span>{{ data }}</span>
    <slot name="customize"></slot>
<div>
```
這里我們通過定義 slot 標簽的 name 值為 customize 來接收父組件在使用該組件時在 template 標簽上定義的 slot="customize" 中的代碼,不同父組件可以定制不同的 slot 代碼來實現差異化的插槽。最終渲染出來的代碼如下:
```html
<div>
    <div class="container">
        <span>我是父組件傳入子組件的數據</span>
        <span>這是定制化的數據</span>
    </div>
</div>
```
這樣我們就完成了一個小型組件的封裝,將共用代碼封裝到組件中去,頁面需要引入的時候直接使用 import 並進行相應注冊即可,當然你也可以進行全局的引入:
```javascript
import myComponent from '../myComponent.vue'

// 全局
Vue.component('my-component', myComponent)
```



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM