请问ref是在一次渲染周期的哪个阶段被赋值的,能否告知一下源码位置,没找到。
因为实际使用中遇到了不符合预期的情况,所以想弄清一下ref的实现原理。
哪位大佬可以结合下面这个例子讲解下,可以参考我的注释。
const MeasureExample: React.FC = () => {
const measureRef1 = useRef<HTMLParagraphElement>(null);
const measureRef2 = useCallback(node => {
// 调用了一次
}, []);
const measureRef3 = (node) => {
// 调用了多次
}
useEffect(() => {
// 我遇到了这里访问measureRef1.current = null的情况,不知道为什么(我当时用了dangerouslySetInnerHTML)!
}, []);
useEffect(() => {
// 官方不建议把ref当作deps,为什么?
}, [measureRef1.current]);
return (
<>
<p ref={measureRef1}>1</p>
<p ref={measureRef2}>2</p>
<p ref={measureRef3}>3</p>
</>
);
};
下面这两个链接有提到点,但没搞清楚ref底层实现原理的情况下有点难以跟上他们的思路。
https://github.com/facebook/r...
https://github.com/facebook/r...