zoukankan      html  css  js  c++  java
  • 自定义dom重现函数useResume

    处理逻辑,经常需要在dom重现使用时回掉函数(重新请求数据,重新定义状态等),以下是工作中常用的一个重新回掉函数的定义:
     
    import { useEffect } from "react";
    
    export default function useResume(fn: any, deps: Array<any>) {
    function getResumeEventInfo() {
    // 设置隐藏属性和改变可见属性的事件的名称
    let hidden;
    let visibilityChange;
    if (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support
    hidden = 'hidden';
    visibilityChange = 'visibilitychange';
    } else if (typeof document['msHidden'] !== 'undefined') {
    hidden = 'msHidden';
    visibilityChange = 'msvisibilitychange';
    } else if (typeof document['webkitHidden'] !== 'undefined') {
    hidden = 'webkitHidden';
    visibilityChange = 'webkitvisibilitychange';
    }
    return { hidden, visibilityChange };
    }
    
    useEffect(() => {
    const { visibilityChange, hidden } = getResumeEventInfo();
    
    
    const handleVisibleChange = () => {
    // 页面可见
    fn(document[hidden]);
    }
    
    document.addEventListener(visibilityChange, handleVisibleChange, false);
    
    return () => {
    document.removeEventListener(visibilityChange, handleVisibleChange, false);
    }
    }, [...deps]);
    }



    使用方法:
    useResume((hidden) => {
     
        if (!hidden ) {
        retryFetch();//重新请求接口数据(自定义)
       }
    }, []);
     
  • 相关阅读:
    Parcel与Parcelable剖析
    Binder文集
    Charles 使用教程
    AsyncTask
    Android 编译时注解
    scanf(),gets(),getchar()
    银行家算法
    最长公共子序列(LCS)问题
    动态规划 求解数字三角形最大值
    参数 存在二维数组
  • 原文地址:https://www.cnblogs.com/yujiawen/p/15401129.html
Copyright © 2011-2022 走看看