有的时候我们全局引用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>

Logo

前往低代码交流专区

更多推荐