Vue元件理解

2021-07-25 06:03:20 字數 1363 閱讀 5973

1 關於元件

元件可以擴充套件html元素,封裝可重用的**。

註冊全域性元件:

vue.component(tagname,options)的形式。如:

template:'

this is

my componentdiv>'

});

元件註冊需要在初始化根例項之前進行,即先註冊元件,再初始化vue例項。對元件進行註冊之後,就可以在父例項中使用。

html:

id="test">

my-component>

div>

js:

//註冊全域性元件

vue.component('my-component',);

//初始化根例項

var test = new vue();

渲染結果:

元件區域性註冊:

不必在全域性註冊每個元件。使用元件例項選項註冊,可以使元件僅在另乙個 例項/元件的作用域中可用。

var child = 

var test = new vue(,

});

2 父子元件

父子元件的關係:通常元件a在它的模板中使用元件b,此時元件a為父元件,元件b為子元件。父子元件應該解耦,元件例項的作用域是孤立的,子元件中不能直接使用父元件的資料。應該使用props傳遞父元件到子元件的資料,子元件通過events給父元件發訊息,以此實現父子元件間的通訊。

如上,在其他元件內部用components宣告元件,即為區域性註冊。在vue例項中用components註冊元件時,可以理解為vue例項為乙個大的父元件,其他任何註冊的元件都是子元件。所以在註冊元件時,如果要使用vue例項data中的資料,都要用props傳遞vue例項中的資料,讓vue例項的資料在元件中可用。

還可以用v-bind動態繫結props的值到父元件的資料,父元件資料發生變化時,子元件的資料也相應的變化。

html:

id="test">

id="testprop">

v-for="book in books">

}p>

}p>

}p>

li>

ul>

:book-list = "books">

test-prop>

div>

js:var testprop = vue.extend();

var test = new vue(,,,

],}

},components:,

});注:不能在元件模板中使用元件本身。

Vue元件的理解

template模板和dom同時寫,template模板會覆蓋當前這個dom節點,要有根節點包裹 元件化的優點 1.可以復用,2.降低 的耦合性。src檔案會整個打包成乙個js檔案 模板 編譯 ast 資料 render函式 虛擬dom 真實html 直接寫render函式會減少編譯過程,提高效率,...

深入理解vue元件

當使用table select等標籤時,元件標籤化可能會有bug,此時應該使用 is 接受元件。在子元件定義data時,data必須是乙個函式,不能是乙個物件。在vue中如果要操作dom,需要使用 ref 引用,從而獲取dom節點。需求 定義乙個子元件,使其數字自加,在父元件中對子元件的數字求和。單...

vue初學 3 深入理解vue元件

舉個例子比較能說明問題 1 vue.component row 如何解決?is語法 這樣就解決了這個問題了。vue.component counter data function methods 在兩個子元件用ref引用 接著在根元件中新增方法來處理資料 handlechange function ...