react绑定ref调用

场景需求:A B 两组件,当 A组件(如添加、删除、更新数据)后需要刷新 B组件 表格数据时,或需要在特定时机强制更新表格数据时,这是一种很常见的 React 组件间通信模式,通过 ref 暴露必要的方法给父组件使用。

1、单页面

import  { useRef } from 'react'

const tableRef = useRef<HTMLTableSectionElement>(null)

<div  ref={tableRef}> xxx </div>

2、多页面

1.子组件暴露ref

 
export type TranslationTableRef = { refresh: () => void }



useImperativeHandle(ref, () => ({
    refresh: mutate,
  }))


 const { data: translationRecord, mutate } = useSWR(
    {
      action: 'FetchTranslationUsageData',
      params: query,
    },
    params => translationsListApi(params.params),
    { refreshInterval: 3000 },
  )

2.父组件接收

//父组件

import type { TranslationTableRef } from './xxx'


const tableRef = useRef<TranslationTableRef>(null)

 
<DocumentUploader transRecordTableRef={tableRef.current}/>     //需要调用的子组件


<TransRecordTable ref={tableRef} />                            //被调用的子组件

3.调用

export default function DocumentUploader({ transRecordTableRef }: { transRecordTableRef: TranslationTableRef | null }) {

xxx


  const handleOk = async () => {
    try {
      await xxxApi({
        params: {
         xxx:xxx
        },
      })

      transRecordTableRef?.refresh()

    }
    finally {
       xxx
    }
  }


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值