Vue3+Ant Design 父组件调用子组件方法

本文详细展示了在Vue应用中,如何通过`ref`和`props`实现父组件对子组件的控制,以及子组件如何触发回调函数以更新父组件的状态,以时间范围选择器为例进行说明。
摘要由CSDN通过智能技术生成

父组件代码

<template>
    <search-module-date ref="rangeDateRef" :option="rangeDateOption" @callBackFun="onRangeChange" />
    <a-button type="default" @click="reset">重置</a-button>
</template>

<script>
import {getSearchDate} from "@views/financeReview/js/config";
import RangeDate from "@components/RangeDate/Child";
import { getSearchDate } from './js/config'
import {ref} from "vue";
import moment from "moment/moment";
export default {
    name: "Parent",
    components: {
       RangeDate
    },
    setup() {
        const rangeDateRef = ref(null)
        const rangeDateOption = getSearchDate()

        /** 时间选择事件 */
        const onRangeChange = (value) => {
            // 开始时间
            console.log(moment(value[0]).format('YYYY-MM-DD HH:mm:ss'))
            // 结束时间
            console.log(moment(value[1]).format('YYYY-MM-DD HH:mm:ss'))
        }

        /** 重置 */
        const reset = () => {
            // 调用子组件方法,清空已选时间。rangeDateRef对应子组件ref的值
            rangeDateRef.value.clearInput()
        }
        return {
            reset,
            rangeDateRef,
            onRangeChange,
            rangeDateOption
        }
    }
}
</script>
<style scoped>
</style>

此处的 rangeDateRef.value.clearInput() 即通过父组件调用子组件的代码实现。其中,rangeDateRef 代表子组件本体,与标签中的 ref="rangeDateRef" 对应。

子组件代码

<template>
    <span> 时间 :</span>
    <a-range-picker ref="range-picker" v-model:value="dateValues"
                    @change="onChange" format="YYYY-MM-DD HH:mm:ss" />
</template>
<script>
import {ref} from "vue";
export default {
    name: "Child",
    components: {},
    props: {
        option: {
            type: Object,
            defalut: () => { }
        }
    },
    setup(props, { emit }) {
        const dateValues = ref([])
        // 选择事件,调用父组件方法
        const onChange = (data) => {
            // callBackFun对应父组件的callBackFun方法
            emit('callBackFun', data)
        }

        // 清空选择框内容
        const clearInput = () => {
            dateValues.value = []
        }

        return {
            onChange,
            clearInput,
            dateValues
        }
    }
}
</script>
<style scoped>
</style>

代码中 emit('callBackFun', data) 是子组件调用父组件的代码实现,callBackFun 对应父组件指定的实际方法。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Ant Design的上传组件,在Vue 3中进行组件调用。首先,你需要在组件引入Ant Design的Upload组件: ``` <template> <div> <a-upload :action="uploadUrl" :headers="headers" :data="data" :multiple="multiple" :before-upload="beforeUpload" :on-progress="onProgress" :on-success="onSuccess" :on-error="onError" :disabled="disabled" > <a-button> <a-icon type="upload"></a-icon> Click to Upload </a-button> </a-upload> </div> </template> <script> import { defineComponent } from 'vue'; import { Upload, Button, Icon } from 'ant-design-vue'; export default defineComponent({ name: 'ParentComponent', components: { 'a-upload': Upload, 'a-button': Button, 'a-icon': Icon }, data() { return { uploadUrl: 'https://www.example.com/upload', headers: {}, data: {}, multiple: true, disabled: false }; }, methods: { beforeUpload() { // Do something before upload }, onProgress() { // Do something on progress }, onSuccess() { // Do something on success }, onError() { // Do something on error } } }); </script> ``` 在组件中,你需要设置上传组件的一些属性,例如上传的URL、请求头、数据、是否允许多文件上传、是否禁用等等。你还需要定义一些上传的回调函数,例如在上传之前执行的函数、上传进度更新函数、上传成功回调函数、上传失败回调函数等等。 在模板中,你可以使用`<a-upload>`标签来引用Ant Design的上传组件。你还可以使用`<a-button>`标签和`<a-icon>`标签来设置上传按钮的样式。 在组件中,你可以使用`$emit`函数来触发组件中定义的回调函数。例如,在上传成功时,你可以使用以下代码触发`onSuccess`函数: ``` this.$emit('on-success'); ``` 在组件中,你可以使用`@`符号来绑定组件触发的事件。例如,你可以使用以下代码来绑定上传成功事件: ``` <a-upload ... @on-success="onSuccess" > ``` 这样,当组件触发上传成功事件时,组件中定义的`onSuccess`函数就会被调用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值