关于mobx:汇总mobx奇淫技巧

简化action属性更新

通常状况下,store中会有很多属性,其中有些属性更新会很频繁,每一个属性都须要写一个action函数去更新,当这种须要变更的属性越多时,会导致store中代码量异样的宏大,可读性也会升高。就如上面代码一样:

class TestStore {
  @observable info = {} as IInfo;
  
  @observable list = [] as IList;
  
  @action
  setInfo = (value: IInfo) => {
    this.info = value;
  }
  
  @action
  setList = (value: IList) => {
    this.list = value;
  }
}

引入typescriptkeyof关键字应用,能够将上述action函数简化如下:

class TestStore {
  @observable info = {} as IInfo;
  
  @observable list = [] as IList;
  
  @action
  setValue = <T extends keyof TestStore>(key: T, value: this[T]) => {
    this[key] = value;
  }
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理