自学内容网 自学内容网

vue 中 ui 组件二次封装后 ref 怎么穿透到子组件里

情景:element-ui 二次封装了 el-table 组件,使用封装组件时,想要调用 el-table 组件内置的一些方法。只在封装组件上定义 ref 是拿不到 el-table 内置方法的。解决方法如下。

1. vue2

封装组件

<template>

  <el-table ref="innerComponentRef" v-bind="$attrs"></el-table>

</template>

<script>

  export default {

    data() {

      return {};

    },

    mounted() {

      const entries = Object.entries(this.$refs.innerComponentRef);

      for (const [key, value] of entries) {

        this[key] = value;

      }

    },

  };

</script>

使用组件

<template>

  <myTable ref="myTabletRef" />

</template>

<script>

  import myTable from "./myTable.vue";



  export default {

    components: { myTable },

    data() {

      return {

        val: 0,

      };

    },

    mounted() {

      console.log(this.$refs.myTabletRef);

      // 这里就可以获取到 el-table 组件提供的所有方法

    },

  };

</script>

2. vue3

封装组件

<template>

  <el-table ref="innerComponentRef" v-bind="$attrs"></el-table>

</template>

<script setup>

  import { ref } from "vue";

  const innerComponentRef = ref();

</script>

使用组件

<template>

  <mytable ref="mytableRef" />

</template>

<script setup>

  import { onMounted, ref } from "vue";

  import mytable from "@com/mytable/index.vue";



  const mytableRef = ref();



  onMounted(() => {

    for (const key in mytableRef.value.innerComponentRef) {

      this[key] = mytableRef.value.innerComponentRef[key];

    }

  });

</script>


原文地址:https://blog.csdn.net/weixin_64684095/article/details/140562284

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!