React.forwardRef
是一个函数,它允许你将refs转发给函数式组件的内部元素。在React中,ref通常是在类组件中使用的特殊属性,它提供了对DOM节点或React元素的引用。然而,在函数式组件中,无法直接访问refs。
React.forwardRef
函数接收一个渲染函数作为参数,并返回一个能够接收ref的函数式组件。这样,父组件就可以将ref传递给函数式组件,然后函数式组件可以选择性地将这个ref绑定到内部的某个元素上。
例如:
// 子组件
import React from 'react';
const PasscodeInput = memo(
React.forwardRef(({ onChange }, ref) => {
useImperativeHandle(ref, () => ({
changeInput: (val) => {
changeHandle(val);
},
// 暴露给父组件,获取焦点时间
getFocus: () => {
inputRef.current.focus();
},
}));
}
//父组件
import PasscodeInput from './PasscodeInput'
const BindPhone = ({ navigation, route }) => {
const Passcode = useRef(null)
// Passcode.current.getFocus() 调用子组件的方法
return (<PasscodeInput onChange={getCode} ref={Passcode} />)
})