rxjs - 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 的学习曲线相当陡峭。谢谢。
解决方案
没有像这样的内置主题,但您可以构建自己的主题
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
});
推荐阅读
- python - SQL Server 和 Python 之间工作流的建议
- c# - 如何以编程方式单击带有类的输入元素
- python - 通过云函数访问 Google Sheets Python API 的身份验证问题
- python - 硒跟随元素python
- ada - 多个链接的 GPRBuild 项目中的相同基础包
- javascript - 在 WebStorm 中配置 Jest
- java - 确保 Kafka 消费者注册到消费者在多台机器上运行的未分配分区
- xslt-1.0 - 如何为格式不正确的 XML 结构添加额外的根节点?
- regex - Perl:word@word 的基本 perl 正则表达式解析
- javascript - 无法读取未定义的属性“用户”(React-Native)