React useImperativeHandle Hook

useImperativeHandle Hook 是一个比较比较简单的 hook,为 ref 节点添加一些处理方法,下面是来自官网例子,为 ref 添加了两个方法。

import { forwardRef, useRef, useImperativeHandle } from 'react';

const MyInput = forwardRef(function MyInput(props, ref) {
  const inputRef = useRef(null);

  useImperativeHandle(ref, () => {
    return {
      focus() {
        inputRef.current.focus();
      },
      scrollIntoView() {
        inputRef.current.scrollIntoView();
      },
    };
  }, []);

  return <input {...props} ref={inputRef} />;
});

export default MyInput;

React 框架中对应的代码实现,代码实现比较简单,在绑定阶段mountImperativeHandle 方法中调用

返回值绑定在 ref.current 属性上,最后返回一个清理 ref.current 的方法。

总结

useImperativeHandle 在 React 为我提供了一个可以为 ref 绑定处理方法的 hook,useImperativeHandle 源码中可以看到实现了绑定以及清理的逻辑。

相关推荐
秃头小宝贝(柚子君)4 分钟前
对象数组按照指定rule对数据进行切割分层形成树形结构并支持搜索功能
开发语言·前端·javascript
xingqing87y9 分钟前
滚动字幕视频怎么制作
前端
你当像火烈鸟16 分钟前
支付系统中如何实现幂等
前端·vue.js
澄风19 分钟前
30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <1> 5分钟快速创建一个springboot web项目
前端·spring boot·后端
吃饺子不吃馅31 分钟前
qiankun、single-spa 和 import-html-entry还傻傻😧分不清楚?
前端·面试·架构
不叫猫先生1 小时前
【React】脚手架进阶
前端·react.js·前端框架
你的万花筒1 小时前
【解决mac本Chrome谷歌浏览器不能访问网络】
前端·chrome·macos
牛奶1 小时前
如果我是前端面试官-HTML&CSS篇
前端·css·面试
一只小菜鸡1 小时前
python+django+elasticsearch实现自动化部署平台构建日志记录(前端vue-element展示)
前端·python·django
pink大呲花1 小时前
onerror事件的理解与用法
前端