option
(除了一些根級特有的選項) 和使用相同的生命週期鉤子,以及模板調用方式。com = Vue.extend(option)
Vue.component('my-com', com)
vm.components: {'my-com': com}
Vue.component('my-com',option)
vm.components('my-com': option)
組件三大API: prop
/ event
/ slot
prophtml
props: ['prop1', 'prop2', ...]
js props: {prop1: Number} props: { prop1: { type: [Number, String], required: true, default: 100, //當默認值是對象或數組時,必須從函數返回值獲取 () => { return value } validator: (value) => { // do somethings return Boolean return result } } }
inheritAttr: false
$attr
v-on / $on
監聽事件$once
一次性事件$emit
觸發事件$off
卸載事件監聽$listeners
v-on綁定監聽器集合(除原生監聽事件).native
原生事件修飾符.sync
雙向綁定修飾符model
屬性html <slot></slot>
html <slot>default content</slot>
html <slot name="someName"></slot> <!-- 組件調用 --> <my-com> <template v-slot:somName></template> <my-com>
html <slot :prop="value"></slot> <!--組件調用 --> <my-com> <template v-slot='childValue'>{{ cilidValue.value}}</template> </my-com>
html <some-component v-slot="childValue"> {{ childValue.value }}</some-component> <some-component v-slot:default="childValue"> {{ childValue.value }}</some-component>
html <my-com v-slot="{value}">{{ value }}</my-com> <!-- 重命名 --> <my-com v-slot="{value: otherName}">{{ otherName }}</my-com> <!-- 重命名並提供默認值 --> <my-com v-slot="{value: {otherName: defaultValue}}">{{ otherName }}</my-com>
html <my-com> <template v-slot:[dynamicSlotName]></template> </my-com>
v-slot
的簡寫 #
html <my-com> <template #somName></template> <my-com>
provide
inject
ref / $refs
$root
$parent
$children
自定義擴展方法
prop / $emit
$attrs
/ $liteners
provide / inject
$root
/ $parent
/ $children
/ $refs
const Bus = new Vue()
Vuex
<component is="com-name"></component>
function
內置組件transiton
/ keep-alive
/ component
數組
v-once
建立靜態組件