Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于方法执行的发生情况进行去抖动_Javascript_Reactjs_Redux_Callback_Debouncing - Fatal编程技术网

Javascript 基于方法执行的发生情况进行去抖动

Javascript 基于方法执行的发生情况进行去抖动,javascript,reactjs,redux,callback,debouncing,Javascript,Reactjs,Redux,Callback,Debouncing,我有一些方法,已经被取消了。我需要的是消除不同代码片段的影响,不是基于时间,而是基于所述方法的执行情况。我需要在HOC中维护这个逻辑,它测量一些元素的位置并将其存储在redux存储中,以便在不同的地方使用。现在,该职位可能会引发一些行动。我需要的是某种形式的初始化检查,当positionSaver在500ms这样的特定时间内不执行时,它将触发“READY”操作(因为位置最终会稳定下来,如果没有执行,就会通知这一点)。但每当位置被保存时,计时器就会重置,我需要在所述组件的不同渲染之间共享它,这样计

我有一些方法,已经被取消了。我需要的是消除不同代码片段的影响,不是基于时间,而是基于所述方法的执行情况。我需要在HOC中维护这个逻辑,它测量一些元素的位置并将其存储在redux存储中,以便在不同的地方使用。现在,该职位可能会引发一些行动。我需要的是某种形式的初始化检查,当
positionSaver
在500ms这样的特定时间内不执行时,它将触发“READY”操作(因为位置最终会稳定下来,如果没有执行,就会通知这一点)。但每当位置被保存时,计时器就会重置,我需要在所述组件的不同渲染之间共享它,这样计时器就不会重置

我一直在努力实现这一目标。下面是我当前的代码。有什么建议吗

export default <P extends object, T extends HTMLElement>(
    Component: React.ComponentType<P>,
    forwardPropName: string = 'ref',
): React.FC<P & IProps<T>> => ({
    name,
    forwardRef,
    ...props
}: IProps<T>) => {
    const dispatch = useDispatch();
    const position = usePosition<T>(forwardRef);

   

    const savePositionFn = (key: NameType, position: DOMRect) => {
        dispatch(
            LayoutActions.seElementPosition({
                [name]: { position },
            }),
        );
    };
    const positionSaver = useDebounce(savePositionFn);

    // call when position not saved for some amount time.
    const initialized = () => console.log('initialized');

    useEffect(() => {
        positionSaver(name, position);

    }, [position, name]]); //don't put `positionSaver` here

    return (
        <Component {...{ [forwardPropName]: forwardRef }} {...(props as P)} />
    );
};
导出默认值(
成分:反应。成分类型

, forwardPropName:string='ref', ):React.FC=>({ 名称 forwardRef, …道具 }:IProps)=>{ const dispatch=usedpatch(); 常量位置=使用位置(forwardRef); const savePositionFn=(键:NameType,位置:DOMRect)=>{ 派遣( LayoutActions.seElementPosition({ [姓名]:{position}, }), ); }; const positionSaver=useDebounce(保存位置fn); //在一段时间内未保存位置时调用。 const initialized=()=>console.log('initialized'); useffect(()=>{ 位置保护程序(名称、位置); },[position,name]];//不要在这里放'positionSaver' 返回( ); };