React forwardRef 用法案例分析
React.forwardRef 会创建一个React组件,这个组件能够将其接受的 ref 属性转发到其组件树下的另一个组件中。这种技术并不常见,但在以下两种场景中特别有用:
- 转发 refs 到 DOM 组件
- 在高阶组件中转发 refs
本文重点介绍下React forwardRef 用法。
用法
forwardRef
:允许你的组件使用 ref 将一个 DOM 节点暴露给父组件。
import { forwardRef } from 'react'; const MyInput = forwardRef((props, ref) => { // ... });
案例分析:ref 属性是 React 的特殊属性,不能直接使用。
import {useRef} from 'react' function InputCom({ref}) { return ( <input type='text' ref={ref} /> ) } function App() { const inpRef = useRef(null) const focus = () => { inpRef.current?.focus() } return ( <> <InputCom ref={inpRef} /> </> ) }
上面就会弹出报错信息:
Warning: InputCom: `ref` is not a prop. Trying to access it will result in `undefined` being returned.
If you need to access the same value Within the child component, you should pass it as a company's prop.
// 警告:InputCom: 'ref不是一个prop。试图访问它将导致返回undefine。如果你需要在子组件中访问相同的值,你应该把它作为公司的prop传递。
如果想传递 ref,这时候就要借助 forwardRef 函数
import { forwardRef, useRef } from "react"; const InputCom = forwardRef((props, ref) => { return <input type="text" ref={ref} />; }); export default function ProRef() { const inpRef = useRef(null); const focus = () => { inpRef.current?.focus(); }; return ( <> <InputCom ref={inpRef} /> <button onClick={focus}>focus</button> </> ); }
到此这篇关于React forwardRef 用法的文章就介绍到这了,更多相关React forwardRef 用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
react-router v6实现权限管理+自动替换页面标题的案例
这篇文章主要介绍了react-router v6实现权限管理+自动替换页面标题,这次项目是有三种权限,分别是用户,商家以及管理员,这次写的权限管理是高级权限能访问低级权限的所有页面,但是低级权限不能访问高级权限的页面,需要的朋友可以参考下2023-05-05React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
这篇文章主要介绍了React Native中ScrollView组件轮播图与ListView渲染列表组件用法,结合实例形式详细分析了ScrollView组件轮播图与ListView渲染列表组件具体功能、使用方法与操作注意事项,需要的朋友可以参考下2020-01-0130分钟精通React今年最劲爆的新特性——React Hooks
这篇文章主要介绍了30分钟精通React今年最劲爆的新特性——React Hooks,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-03-03React Hooks之使用useCallback和useMemo进行性能优化方式
这篇文章主要介绍了React Hooks之使用useCallback和useMemo进行性能优化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-06-06
最新评论