微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据发生的方法执行去抖动

如何解决根据发生的方法执行去抖动

我有一些方法,该方法已被删除。我需要的是不基于时间而是根据所述方法的执行情况来去抖动不同的代码片段。我需要在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)} />
    );
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。