在我的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
1条答案
按热度按时间xdyibdwo1#
Mobx
computed
的唯一memoize的东西在React式上下文,e。例如observer
、reaction
等内部。否则,计算表达式在每次请求其值时都会被求值,因此它们的行为就像普通属性/方法一样(没有缓存)。因此,要修复您的示例,您只需将
App
组件 Package 为observer
HOC。文档中的更多信息