React自定义hook之useMountedRef返回组件的挂载状态

2022-05-19 13:41:09 浏览数 (2)

前置知识

useRef 返回一个可变的 ref 对象,其 .current 属性被初始化为传入的参数(initialValue)。返回的 ref 对象在组件的整个生命周期内保持不变。

本质上,useRef 就像是可以在其 .current 属性中保存一个可变值的“盒子”。

代码实现

代码语言:javascript复制
// 返回组件的挂载状态,如果还没挂载或者已经卸载,返回false;反之,返回true
export const useMountedRef = () => {
  const mountedRef = useRef(false);

  useEffect(() => {
    //页面加载完调用
    mountedRef.current = true;
    //页面卸载调用
    return () => {
      mountedRef.current = false;
    };
  });
  return mountedRef;
};
代码语言:javascript复制
//使用
  const mountedRef = useMountedRef();

0 人点赞