脱围机制-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('刷新成功')
    }
相关推荐
木木黄木木几秒前
基于HTML5的拖拽排序功能实现详解
前端·html·html5
Stupid4 分钟前
[学习笔记] 工程化的浅入了解
前端
阿航hang5 分钟前
Reactivity 模块
前端
快来卷java5 分钟前
RabbitMQ 技术详解:异步消息通信的核心原理与实践
java·分布式·rabbitmq
float_六七6 分钟前
C++中的搜索算法实现
java·c++·算法
PineSongCN7 分钟前
nginx 反向代理后SSE连接无效的问题
前端
还是鼠鼠7 分钟前
Node.js 路由 - 初识 Express 中的路由
前端·vscode·前端框架·npm·node.js·express
Moment10 分钟前
岗位急招,算法实习、音乐生成、全栈、flutter 都有,早十晚六 😍😍😍
前端·后端·面试
最新资讯动态12 分钟前
想让鸿蒙应用快得“飞起”,来HarmonyOS开发者官网“最佳实践-性能专区”
前端
我是小趴菜14 分钟前
Vue项目开启代码压缩
前端