我对这一点感到困惑React.forwardRef
。正如其文档中所解释的,我知道它的主要用途是让父组件访问子组件的DOM元素。但我已经可以做到这一点,甚至不必使用它。
这是一个代码示例,您可以将其插入 CodeSandbox 并查看它是否有效:
import React, {useRef, useEffect} from "react";
import "./styles.css";
const ChildComponent = (props) => {
useEffect( ()=> {
props.callbackFunction()
})
return(
<div ref={props.fRef}>
{"hello"}
</div>
)
}
export default function App() {
const callbackFunction = () => {
console.log("The parent is now holding the forwarded ref to the child div: ")
console.log(forwardedRef)
}
const forwardedRef = useRef(null)
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<ChildComponent name="gravy" callbackFunction={callbackFunction} fRef={forwardedRef}/>
</div>
);
}
或者这里是这个例子的嵌入。老实说,我对此有点陌生,我不知道嵌入是如何工作的,也不知道有人摆弄嵌入是否会改变我原来的沙箱,所以我犹豫不决。但在这里。 示例转发参考
在示例中,父App()组件成功地将 ref 传递给子组件,子组件将其附加到其呈现的div。渲染后,它会向父级调用回调函数。然后父级执行控制台日志,证明其转发的 ref 现在拥有子级的 div。而这一切都是在没有React.forwardRef
.
那么有什么用React.forwardRef
呢?