Vue入門教程 第五篇 (組件)


component(組件)

vue是單頁面web程序,這意味着需要大量模塊化界面參與其中,這就是組件。

組件是一個實現單一功能的vue界面,也可以是一個以功能划分而成的復雜vue界面。

 

注冊組件:

 Vue.component('my-component-name', { /* ... */ }) 

范例:

 1 <div id="app">
 2     <runoob></runoob>
 3 </div>
 4 <script>
 5 // 注冊
 6 Vue.component('runoob', {
 7   template: '<h1>自定義組件!</h1>'
 8 })
 9 new Vue({
10   el: '#app'
11 })
12 </script>

以上這些組件是全局注冊的。也就是說它在注冊之后可以用在任何新創建的 Vue 根實例 (new Vue) 的模板中。全局注冊所有的組件意味着即便你已經不再使用一個組件了,它仍然會被包含在你最終的構建結果中。這造成了用戶下載的 JavaScript 的無謂的增加。

 

局部注冊組件:

 1 <div id="app">
 2     <runoob></runoob>
 3 </div>
 4 <script>
 5 var Child = {
 6   template: '<h1>自定義組件!</h1>'
 7 }
 8 new Vue({
 9   el: '#app',
10   components: {
11     'runoob': Child// <runoob> 將只在父模板可用
12   }
13 })
14 </script>

模塊中注冊組件:

 1 <template>
 2  <BaseInput
 3   v-model="searchText"
 4   @keydown.enter="search"
 5  />
 6  <BaseButton @click="search">
 7   <BaseIcon name="search"/>
 8  </BaseButton>
 9 </template>
10 
11 <script>
12 import BaseButton from './BaseButton.vue'
13 import BaseIcon from './BaseIcon.vue'
14 import BaseInput from './BaseInput.vue'
15 
16 export default {
17   components: {
18     BaseButton,
19     BaseIcon,
20     BaseInput
21   }
22 }
23 </script>

 

export和export default

export 和export default 都用來導出模塊,Vue 的單文件組件通常需要導出一個對象,這個對象是 Vue 實例的選項對象,以便於在其它地方可以使用 import 引入。

而 new Vue() 相當於一個構造函數,在入口文件 main.js 構造根組件的同時,如果根組件還包含其它子組件,那么 Vue 會通過引入的選項對象構造其對應的 Vue 實例,最終形成一棵組件樹。

 

export 可以導出多個命名模塊,例如:

1 //demo1.js
2 export const str = 'hello world'
3 export function f(a){
4     return a+1
5 }

對應的引入方式:

1 //demo2.js
2 import { str, f } from 'demo1'

 

export default 只能導出一個默認模塊,這個模塊可以匿名,例如:

1 //demo1.js
2 export default {
3     a: 'hello',
4     b: 'world'      
5 }

對應的引入方式(模塊可以起別名):

//demo2.js
import obj from 'demo1'

 

父子組件相互調用函數

父調子:

在vue中聲明子組件並設置ref屬性,PageContractDetail是子組件:

 <PageContractDetail ref="contractDetail"></PageContractDetail> 

在代碼中使用this.$refs.子組件ref值.子組件函數() 方式調用:

  this.$refs.contractDetail.initData(row.id); 

 

子調父:

直接使用this.$parent.父函數() 調用即可:

 this.$parent.hideDetail(); 

 


免責聲明!

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



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