首页 > 解决方案 > 如何使用钩子将类组件转换为功能组件

问题描述

我的代码类组件

raf = (callback) => {
     var self = this;
        if (this.requestFrame) raf.cancel(this.requestFrame);
        this.requestFrame = raf(function () {
            self.requestFrame = undefined;
            callback();
        });
    }

update = (callback) => {
    this.raf(function () { this._update(callback) });
}

我的代码功能组件

const raf = (callback) => {
        if (Scrollbars.requestFrame) raf.cancel(Scrollbars.requestFrame);
        Scrollbars.requestFrame = raf(() => {
            Scrollbars.requestFrame = undefined;
            callback();
        });
    };

    const update = (callback) => {
        raf(() => _update(callback));
    };

我正在从类组件切换到函数组件,但是当我切换时,函数raf中出现错误“超出最大调用堆栈大小” 。有人请帮助我。

标签: reactjsreact-hooks

解决方案


在您的功能组件中添加以下代码并尝试:

const update = (callback) => {
  useEffect(() => {
    raf(() => _update(callback));
  }, []);
};


推荐阅读