React函数组件—父组件调用子组件函数

  父组件 我这里用UI框架AntPro V4 我这里以父组件打开模态框为例,实现父组件调用子组件函数。

 

import React, { useState,useEffect,useRef,useCallback } from 'react'

import { connect } from 'umi';

import { PageHeaderWrapper } from '@ant-design/pro-layout';

import  LeaveModal  from './components/leaveModal'

const Leave = (props) =>{

    const ref = useRef();

    const handleLeave = useCallback(() =>{

        ref.current.onVisibleChange()

    })

// 假期设置

    const columns1 = [

        {

        title: '假期名称',

        width: 120,

        dataIndex: 'name',

        fixed: 'left',

        search:false,

        },

        {

        title: '余额规则',

        width: 120,

        fixed: 'left',

        search:false,

        dataIndex: 'balanceRuleDsc',

        },

        {

        title: '操作',

        key: 'option',

        align:'center',

        width: 80,

        valueType: 'option',

        render: () => [

        <span key="1">

               // 打开模态框

            <a onClick={handleLeave}>请假规则</a>

        </span>,

        <span key="2">

            <a onClick={handleBalance}>余额规则</a>

        </span>],

        }

    ]

    return (

        <PageHeaderWrapper title={false}>

            <LeaveModal ref={ref} ></LeaveModal>

        </PageHeaderWrapper>

    )

}

export default connect(

    ({ checking: { VacationAll,SelectById,SelectBalance }, loading }) => ({

      VacationAll,

      SelectById,

      SelectBalance,

      activitiesLoading: loading.effects['checking/selectVacationAll'],

      selectByIdLoading: loading.effects['checking/selectById'],

      selectBalanceLoading: loading.effects['checking/selectBalance'],

      

      

    }),

  )(Leave);

子组件

import React, { useState,useEffect,useRef, useImperativeHandle } from 'react';

import ProForm, {

    ModalForm,

    ProFormText,

  } from '@ant-design/pro-form';

const LeaveRule = React.forwardRef((props,ref) => {

    const inputRef = useRef();

    const { itemList } = props

    const [isAble,setIsAble] = useState(false)


 

    const onVisibleChange = (e) => {

        setIsAble(e)

    };

     // 子组件暴露方法

    useImperativeHandle(ref, () => ({

        onVisibleChange: () => {

            onVisibleChange(true)

        }

    }));

    return (

        <>

        <ModalForm

        title="新增工资套"

        ref={inputRef}

        visible={isAble}

        onFinish={async () => {

        //   message.success('提交成功');

          return true;

        }}

        onVisibleChange={onVisibleChange}

      >

        <ProForm.Group>

          <ProFormText

            width="md"

            name="name"

            label="签约客户名称"

            tooltip="最长为 24 位"

            placeholder="请输入名称"

          />

          <ProFormText width="md" name="company" label="我方公司名称" placeholder="请输入名称" />

        </ProForm.Group>

        </ModalForm>

        </>

    )

})

export default LeaveRule

如何您有更好的方法请留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT侠客行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值