登录
首页 >  文章 >  前端

封装子组件后,如何从父组件中调用子组件的 ref 方法?

时间:2024-10-31 15:28:08 429浏览 收藏

推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

最近发现不少小伙伴都对文章很感兴趣,所以今天继续给大家介绍文章相关的知识,本文《封装子组件后,如何从父组件中调用子组件的 ref 方法?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

封装子组件后,如何从父组件中调用子组件的 ref 方法?

子组件 ref 方法在父组件中的妙用

在 element ui 中,使用子组件的 ref 方法可以访问子组件实例。但是,当子组件被封装起来的时候,如何从父组件调用子组件的 ref 方法呢?

封装子组件

以下代码展示了封装好的子组件:

<template>
  <el-form :model="formmodel" ref="formref" :rules="formrules" :label-width="formdata.labelwidth">
    <el-form-item :label="item.label" :prop="item.prop" v-for="(item, k) in formdata.items" :key="k">
      <!-- 输入框或文本域 -->

      <!-- 其他表单元素(省略) -->
    </el-form-item>
  </el-form>
</template>

<script>
export default {
  name: 'eform',
  props: {
    formdata: {
      type: object,
      required: true,
      default: () => {}
    },
    formmodel: {
      type: object,
      required: true,
      default: () => {}
    },
    formrules: {
      type: object,
      required: false,
      default: () => {}
    }
  },
  methods: {
    childmethod() {
      this.$refs['formref'].resetfields()
    },
    validateformitem() {
      this.$refs['formref'].validate(valid => {
        this.$emit('validateform', valid, this._props.formmodel)
      })
    }
  }
}
</script>

父组件调用子组件 ref 方法

在父组件中,你可以通过以下方式访问子组件实例:

<template>
  <!-- 子组件 -->
  <e-form ref="form"></e-form>
</template>

<script>
export default {
  methods: {
    // 直接调用子组件 ref 方法
    resetform() {
      this.$refs.form.$refs['formref'].resetfields()
    }
  }
}
</script>

或者,你可以先定义一个中间变量:

<script>
export default {
  mounted() {
    const form = this.$refs.form
    // 通过中间变量调用子组件 ref 方法
    form.$refs['formRef'].resetFields()
  }
}
</script>

解决问题

问题中的情况下,你在子组件的 mounted 钩子中尝试直接调用 ref 方法,这是不会生效的。正确的做法是在 methods 中定义一个重置表单的函数,并通过它来调用 ref 方法。

本篇关于《封装子组件后,如何从父组件中调用子组件的 ref 方法?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>