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

问题描述

我有一家商店:

class Store {
  user!: User;

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

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

User自定义对象,我应该区别对待他吗(可观察的明智)?

提前致谢!

解决方法

By default make(Auto)Observable 仅支持已定义的属性,因此您需要在构造函数中定义 user 或使其可以为空:user: User | null = null

或者,您可能想尝试重新配置 how class properties initialisation works,使用 useDefineForClassFields TS 编译器标志:

"compilerOptions": {
  "useDefineForClassFields": true
},