脱围机制-react18废除forwardRef->react19直接使用ref的理解

采用ref,可以在父组件调用到子组件的功能

第一步:在父组件声明ref并传递ref

复制代码
interface SideOptsHandle {
  refreshData: () => Promise<void>
}
  const sideOptsRef = useRef<SideOptsHandle>(null) // 创建 ref
            <SideOpts ref={sideOptsRef} />

第二步:在子组件接收ref,并通过useImperativeHandle进行脱围

复制代码
interface SideOptsHandle {
  refreshData: () => Promise<void>
}

interface SideOptsProps {
  ref?: React.Ref<SideOptsHandle>
  // 其他 props 可在这里定义
}
const SideOpts = ({ ref }: SideOptsProps) => {

  useImperativeHandle(ref, () => ({
    refreshData: async () => {
      await fetchData()
    },

第三步:父组件使用ref进行使用子组件脱围的对象

复制代码
    if (sideOptsRef.current) {
      await sideOptsRef.current.refreshData() // 调用 SideOpts 的刷新方法
      console.log('刷新成功')
    }
相关推荐
麻瓜code几秒前
【JUC】AQS enq() 自旋入队
java
hanchenxing15 分钟前
前端异步任务三方案:Celery vs Redis Stream vs BullMQ 实战对比消息队列
前端·数据库·redis·异步任务·方案对比
Wang's Blog20 分钟前
Java框架快速入门: Spring Security+OAuth2之核心角色与授权流程
java·spring·github
hai_android31 分钟前
Kotlin Flow combine 源码剖析:一个 Channel 如何优雅合并多条流
android·java·kotlin
mONESY34 分钟前
LangGraph.js 从零上手:把 Agent 工作流从一条线变成一张网
javascript
默_笙35 分钟前
⚓ AI 的"官方答题卡":withStructuredOutput 与结构化输出的终局之战
前端·javascript
掘金挖土35 分钟前
前端手摸手跑路之 AI 应用开发(五)
前端·后端
caoerzhong39 分钟前
JeeWMS 开源仓库管理系统权限与域验证解析:Java WMS 如何把数据权限管到仓、货主与人
java·python·开源·vue
君顾141 分钟前
西安 24 小时自助健身房系统开发实战指南
java·开发语言·健身房
用户0942485680342 分钟前
第9章:OpenJDK堆分代与 Serial/Parallel GC 基础
java·jvm