脱围机制-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('刷新成功')
    }
相关推荐
好大哥呀15 分钟前
Java Web的学习路径
java·前端·学习
f***147716 分钟前
SpringBoot实战:高效实现API限流策略
java·spring boot·后端
on the way 12317 分钟前
day06-SpringDI 依赖注入
java·spring
HashTang22 分钟前
【AI 编程实战】第 7 篇:登录流程设计 - 多场景、多步骤的优雅实现
前端·uni-app·ai编程
cos39 分钟前
Fork 主题如何更新?基于 Ink 构建主题更新 CLI 工具
前端·javascript·git
小满zs41 分钟前
Next.js第二十一章(环境变量)
前端·next.js
C***11501 小时前
Spring aop 五种通知类型
java·前端·spring
BD_Marathon1 小时前
SpringBoot——多环境开发配置
java·spring boot·后端
代码N年归来仍是新手村成员1 小时前
【Java转Go】即时通信系统代码分析(一)基础Server 构建
java·开发语言·golang