vue组件化
事件的派发和更新通常是同一个组件。注意点
误区:子组件$emit,父组件监听子组件的@EventName ,认为是父组件监听,子组件派发。
$attrs/$listeners编码效率组件封装常用点
爷孙组件传参常用点⭐
//index.vue<Parent msg="msg from grandpa" @foo="onFoo"></Parent>//Parent.vue//属性展开<Child2 v-bind="$attrs" v-on="$listeners"></Child2>//child2.vue//template<p>{{$attrs.msg}}</p>//methodssendToChild1() {this.$emit('foo')}
这样可以在父辈组件中将属性传递下去,不用额外设置props,🌰
:props-name="someData"这样形式传递。
$listeners的作用可以少些很多代码,比如在父辈组件中绑定@event-name="someEventName",子辈组件$emit的时候可以隔级传递自定义事件。不需要一层一层传递自定义事件。
provide/inject编码效率组件封装常用点
跨多级组件传参常用
//index.vueprovide() {return {bar: 'bar'}},//child.vueinject:['bar'] //用法1inject: {bar1: {from: 'bar',default: 'barrrrrrrr' //默认值}}, //用法2inject: {bar1: 'bar'}, //用法3
inheritAttrs: false
Vue.extend
const Constructor = Vue.extend(component) // 生成构造器const instance = new Constructor() // 创建实例instance.$mount('body') //挂载body
