首页 > 解决方案 > RXJS 更新主题类似于 Svelte 商店?

问题描述

有没有办法用当前值的实例更新像 Svelte 商店这样的 RXJS 主题?目前我有:

const materials = someMethodToGetResults();
const tmp = this.activeFilters.value;
tmp.materials = materials;
this.activeFilters.next(tmp);

在我看来这不是很优雅。我总是需要更新整个对象,而我只需要更新属性。我认为 Svelte 解决了这个超级优雅的问题,商店有这样的更新方法:

this.activeFilters.update(current => {
  current.materials = someMethodToGetResults();
  return current;
});

我错过了什么吗?RXJS 的学习曲线相当陡峭。谢谢。

标签: rxjssveltesubject

解决方案


没有像这样的内置主题,但您可以构建自己的主题

export class StoreSubject extends BehaviorSubject {
   update(updateFn) {
     this.next(updateFn(this.getValue());
   }
}

用法:

const store = new StoreSubject(initialValue);
// .. later:
store.update(val => {
  // do something
  return val
});

推荐阅读