脱围机制-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('刷新成功')
    }
相关推荐
爱编程的小新☆6 小时前
【LeetCode】从递归到 Flood Fill:5 道题吃透 DFS 的选择、回溯与标记
java·算法·leetcode·深度优先·回溯·flood fill
西安小哥6 小时前
破局与重生:大厂前端如何借力 AI 转型“超级全栈“
前端·人工智能
weixin_383196476 小时前
java基础面试题@Autowired和@Resource区别
java·开发语言
evans在进步6 小时前
LeetCode 33:搜索旋转排序数组——Java 两阶段二分查找详解
java·python·leetcode
sunly_7 小时前
TypeScript总结:16、面向对象速查
前端·javascript·typescript
张元清7 小时前
React useInterval Hook:没有过期闭包的 setInterval (2026)
javascript·react.js
MXN_小南学前端7 小时前
React超长文本域中实现“返回顶部”浮动按钮
前端·javascript·react.js
Web Security Loop7 小时前
MAC卸载JDK环境
java·macos·jdk
学习嵌入式的小周7 小时前
Notepad++8.8.7下载安装(附安装包)
前端·notepad++
gs801407 小时前
解构 Cordis:面向“时空可组合性”的 TypeScript 元框架深度剖析
前端·javascript·typescript