typescript Mobx computedFn不记得了?

f0brbegy  于 2023-05-01  发布在  TypeScript
关注(0)|答案(1)|浏览(145)

在我的React代码中,我在多个地方使用和调用computedFn。但是,当我做安慰。日志或调试一步一步,我没有看到它的记忆任何东西,相反,它会执行computedFn内部的逻辑,每次我调用它。
中的代码示例。ts文件:

const getComp = computedFn((num: number) => {
    console.log('**** get computed num');
    return num * num;
});

function testComputedFn() {
    for (let i = 0; i < 10; i++) {
        getComp(8);
    }
}

我可以看到'****get computed num'在console中10次。看来记忆一点用都没有?我不确定我是否错过了什么。
下面是一个可以测试的类似代码:https://playcode.io/1447230

xdyibdwo

xdyibdwo1#

Mobx computed的唯一memoize的东西在React式上下文,e。例如observerreaction等内部。否则,计算表达式在每次请求其值时都会被求值,因此它们的行为就像普通属性/方法一样(没有缓存)。
因此,要修复您的示例,您只需将App组件 Package 为observer HOC。

import { observer } from 'mobx-react'

export const App = observer(...)

文档中的更多信息

相关问题