脱围机制-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('刷新成功')
    }
相关推荐
爬山算法8 分钟前
Netty(19)Netty的性能优化手段有哪些?
java·后端
远山无期12 分钟前
解决Tailwind任意值滥用:规范化CSS开发体验
前端·css·eslint
love is sour20 分钟前
深入浅出 jmap:Java 内存分析的“显微镜“
java·开发语言·测试工具·性能优化
用户542778485154021 分钟前
Vue 3 中开发高阶组件(HOC)与 Renderless 组件
前端
想用offer打牌22 分钟前
虚拟内存与寻址方式解析(面试版)
java·后端·面试·系统架构
代码or搬砖24 分钟前
SQL核心语法总结:从基础操作到高级窗口函数
java·数据库·sql
月明长歌30 分钟前
【码道初阶】【Leetcode94&144&145】二叉树的前中后序遍历(非递归版):显式调用栈的优雅实现
java·数据结构·windows·算法·leetcode·二叉树
幼儿园老大31 分钟前
告别代码屎山!UniApp + Vue3 自动化规范:ESLint 9+ 扁平化配置全指南
javascript·vue.js
HIT_Weston35 分钟前
67、【Ubuntu】【Hugo】搭建私人博客(一)
前端·ubuntu·hugo
阿里巴啦1 小时前
用React+Three.js 做 3D Web版搭建三维交互场景:模型的可视化摆放与轻量交互
前端·react·three.js·模型可视化·web三维·web三维交互场景