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

MobX - 迁移到 MobX v.6+

如何解决MobX - 迁移到 MobX v.6+

我需要将 MobX v.5 迁移到支持 React 钩子的 MobX v6+,但是在升级MobX v6+ 后,我收到此错误 [MobX] Cannot obtain atom from undefined想用 onBecomeObserved 创建 Lazy observable,由于某种原因,这会引发上述错误,但我不知道是什么原因造成的。

我使用 MobX 提供的注入将组件连接到商店,它可能不再是一个好的模式,但它是我如何从旧的 MobX 迁移的最快方法withTheme 函数Material-UI 主题系统的连接器

export function injector<T>(target: T): T {
  return inject('data','view')(withTheme(target));
}

export function storeConnect<T extends IReactComponent>(target: T): T {
  return injector(observer(target));
}

这里是我创建惰性 observable 的基础商店,它应该负责从 API 加载数据,但是在这里我的应用程序崩溃并且无法找到解决方案。

abstract class BaseProvider {
  @observable state = "NONE";

  constructor() {
    //this it throws error
    onBecomeObserved(this,"isLoading",this.loadData);
  }

  public abstract loadData(): void;

  @computed get isLoading() {
    return (this.state === "Loading");
  }
}

class Provider extends BaseProvider {
  constructor() {
    super();
    this.loadData = this.loadData.bind(this);
  }

  public loadData() {
    if (this.state !== "Loaded") {
      //some code
    }
  }
}

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