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 ...