当前位置: 首页 > news >正文

forwardRef和useImperativeHandle到底能做啥

线上个官网例子
App.js

import { useRef } from 'react';
import MyInput from './MyInput.js';export default function Form() {const ref = useRef(null);function handleClick() {ref.current.focus();// This won't work because the DOM node isn't exposed:// ref.current.style.opacity = 0.5;}return (<form><MyInput placeholder="Enter your name" ref={ref} /><button type="button" onClick={handleClick}>Edit</button></form>);
}

Myinput.js

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;

forwardRef是React 提供的一个高阶函数,配合useImperativeHandle, 可以让父组件拿到子组件中某个element暴露的方法,比如input的focus事件, 父子组件都需要申明一个ref,forwardRef可以用来包裹子组件,并且把父组件的ref传递到子组件中, 两个ref通过useImperativeHandle进行联动
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • DataWhale AI夏令营-英特尔-阿里天池LLM Hackathon
  • Xlua原理分析 四
  • 虚拟机ubuntu22.04找不到ttyUSB*端口
  • Windows系统之环境变量
  • Lumos学习王佩丰Excel第十讲:Sumif函数
  • .NET未来路在何方?
  • ei会议论文是什么级别
  • 登录相关功能的优化【JWT令牌+拦截器+跨域】
  • 研0 冲刺算法竞赛 day27 P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G
  • linux 进程 inode 信息获取
  • Java 面试常见问题之——final,finalize 和 finally 的不同之处
  • Java IO与NIO的对比与高级用法
  • python-打分(赛氪OJ)
  • 书生大模型实战营第三期——入门岛——Git基础知识
  • 【Android】四大组件(Activity、Service、Broadcast Receiver、Content Provider)、结构目录
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • @angular/forms 源码解析之双向绑定
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Android单元测试 - 几个重要问题
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ECS应用管理最佳实践
  • ES10 特性的完整指南
  • Javascript 原型链
  • jQuery(一)
  • Nacos系列:Nacos的Java SDK使用
  • Python 基础起步 (十) 什么叫函数?
  • scrapy学习之路4(itemloder的使用)
  • Spark RDD学习: aggregate函数
  • Spark学习笔记之相关记录
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 创建一种深思熟虑的文化
  • 每天一个设计模式之命令模式
  • 入手阿里云新服务器的部署NODE
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​【已解决】npm install​卡主不动的情况
  • ​Java基础复习笔记 第16章:网络编程
  • #DBA杂记1
  • #在 README.md 中生成项目目录结构
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $nextTick的使用场景介绍
  • (152)时序收敛--->(02)时序收敛二
  • (4.10~4.16)
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (day6) 319. 灯泡开关
  • (LeetCode C++)盛最多水的容器
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (二)linux使用docker容器运行mysql
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)计算机毕业设计大学生兼职系统
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (算法)求1到1亿间的质数或素数