首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >createTransformer从mobx-utils生成的函数的结果未被回溯。

createTransformer从mobx-utils生成的函数的结果未被回溯。
EN

Stack Overflow用户
提问于 2021-12-21 12:15:20
回答 1查看 99关注 0票数 0

我试图用参数来实现计算的getter函数,比如如本答案所示和MobX 6以及相应版本的mobx-utils

代码语言:javascript
复制
export class CodificatorStore {
  @observable.ref items: Array<Codificator> | null = null;

  @action setItems(items: Array<Codificator>): void {
    this.items = items;
  }

  @computed get item(): ITransformer<number, Codificator | null> {
    return createTransformer((index: number): Codificator | null => {
      console.log(`get item by index: ${index}`);
      return this.items ? this.items[index] : null;
    });
  }
}

我期望创建函数来回忆录它的执行结果,每次我用相同的参数和相同的(没有改变的)可观察的items调用它,但是我在React组件的render方法中得到一个新的记录在每个调用上的消息:

代码语言:javascript
复制
codificatorStore.item(0);

根据文档源代码,我期望在所有连续调用时从reactiveView返回回传值,而不是调用我的转换函数。我是不是误解了什么?怎样才能达到预期的效果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-21 13:25:04

首先,你真的需要回忆录这样简单的操作吗?还是只是个例子?

第二,如果你只需要回忆录,你根本不需要createTransformer,它的作用有点不同。但是您可以使用computedFn,就像这样:

代码语言:javascript
复制
import { computedFn } from 'mobx-utils';

// ...

  item = computedFn((index) => {
    console.log(`get item by index: ${index}`);
    return this.items ? this.items[index] : null;
  });

Codesandbox示例

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70435314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档