React Hooks:useRef Hook为什么.current为null?
我有一个简单的组件示例:
function App() { const observed = useRef(null);
console.log(observed.current);
return (
<div ref={observed} className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
我希望它observed.current
的类型为element,而current不会为空,而是具有所有属性的div元素。我的理解是:
- 引用初始化为空值
- 引用将覆盖Null
但事实证明,它.current
仍然是空的。这很不好,因为我想将观察值传递给需要Element类型参数的函数。
https://codesandbox.io/embed/purple-
forest-0460k
回答:
Ref.current
为null,因为直到函数返回并呈现内容后才设置ref。所述useEffect钩触发间隔的阵列的内容的值传递给它的变化的时间。通过传入observed
数组并传递记录observed
到控制台的回调,可以利用useEffect挂钩完成任务。
useEffect(() => { console.log(observed.current);
}, [observed]);
编辑:这仅适用于第一个渲染,因为对参考的更改不会触发重新渲染。但是关于useEffect的一般声明仍然成立。如果要观察dom元素的引用的更改,则可以使用回调作为引用。
<div ref={el => { console.log(el); observed.current = el; }} // or setState(el)
className="App"
>
代码沙箱
以上是 React Hooks:useRef Hook为什么.current为null? 的全部内容, 来源链接: utcz.com/qa/435623.html