请问ref是在一次渲染周期的哪个阶段被赋值的?

请问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...

阅读 1.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题