Vue二次封装组件,并传递props和v-on事件

有的时候我们全局引用UI框架(类似于ElementUI)的时候,有些简单的组件我们想进行二次封装,并确保能传递所需的props和事件,这时候就需要用到vue实例上的两个属性:$props$listeners,最后全局注册组件覆盖掉原始的就好了。
<template>
  <el-inputs v-model="currentValue" v-bind="$props" v-on="$listeners">el-inputs>
template>
<script>
import { ElInput } from 'element-ui';

export default {
  name: 'ElInput',
  components: {
    ElInputs: ElInput
  },
  props: {
    ...ElInput.props,
    value: [String, Array, Object, Number],
  },
  computed: {
    currentValue: {
      get() {
        return this.value;
      },
      set(newV) {
        this.$emit('input', newV);
      }
    }
  }
};
script>

你可能感兴趣的:(Vue)