错误:[MobX] 无法将“observable”应用于“Store@user”:找不到字段

gra*_*n33 11 state-management typescript mobx

我有一个商店:

class Store {
  user!: User;

  constructor() {
    makeObservable(this, {
      user: observable,
      setUser: action
    });
  }
  
  setUser = (user: User | undefined) => this.user = user;
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误: Error: [MobX] Cannot apply 'observable' to 'Store@user': Field not found.

User是一个自定义对象,我应该以不同的方式对待他(可观察的明智的)?

提前致谢!

Dan*_*ila 19

默认情况下 make(Auto)Observable仅支持已定义的属性,因此您需要user在构造函数内定义或使其可为空,如下所示:user: User | null = null。

或者,您可能想尝试使用TS 编译器标志重新配置类属性初始化的工作方式useDefineForClassFields:

"compilerOptions": {
  "useDefineForClassFields": true
},
Run Code Online (Sandbox Code Playgroud)