日报_24

104 阅读1分钟

2020年5月27日 星期三

Always protect yourself.

今天呢早上呢也也是和往常一样进了背诵面试题,然后老大和主任呢给我们开了一个班会,总结了上一周的情况,然后老大说了一下接下来一个月的任务安排然,后呢有接着Vue的组件通讯讲了两个新的知识点,就是Vue 新增的?attrs与?listeners.,mixin全局混入,还有就是要提高一下这个造轮子能力,使用Vue呢自己封装几个组件

$attrs

作用:

主要用于跨组件传输props,中间组件使用v-bind = "$attrs"转发,

$listeners:

    和$attrs类似,主要是从根组件向下传递事件,可以跨组件传递

mixin全局混入

全局注册一个混入,影响注册之后所有创建的每个 Vue
实例。插件可以使用混入,向组件注入自定义的行为。不推荐在应用代码中使用。
全局mixin就是给全部Vue文件添加一些公用的实例。

步骤:

第一步:创建一个mixin文件(js文件)
const mixins = {
data() {
 return {
    w:'word'  
  }  

},
methods: {
 // 确定
 confirm () {
   //  this.app.getData(666);
   // 子级派发confirm事件
   this.$emit('confirm', { name: this.name, price: this.price })
 },
 // 取消
 cancel () {
   this.$emit('cancel')
 }
}
}

export default mixins;

第二步:引入到组件中并且通过mixins注入
import mixins from '../utils/mixin
export default {
   name: 'maskDialog',
   mixins: [mixins],
   props: {},
   methods:{}
}

怎么进行组件的封装

1.props:父传子   
2.事件(派发和监听)  
 this.$emit()派发事件
 通过@或$on来监听事件
 
3.slot(插槽),内容分发
 
 命名插槽
   <slot name="命名插槽名"></slot>
   
  例如:<slot name="qrcode"></slot>
  
 使用:
    <div slot="qrcode">
        .....
    </div>
  

封装组件思考:
   1.你想向用户暴露哪些属性 (props)
   2.你想向用户暴露哪些事件,让用户监听来处理后续的业务 ($emit,@)
   3.你想让用户嵌入哪些自定义的内容(slot)