我正在使用MobX和我的React应用程序来管理我的全局状态。基本上,我是在镜像后端数据(关系数据库)的结构,并根据需要获取数据。
目前我有以下结构:
class Model {
@observable id
@observable propA = 0
constructor(doc) {
this.id = doc.id
this.propA = doc.propA
}
@action
update = (doc) => {
this.propA = doc.propA
}
@computed
get computedProp() {
return this.propA * 2
}
}
class Store {
records = observable.map()
@action
fetchOne = async (id) => {
const doc = await fetch(url + id)
const model = new Model(doc)
this.records.set(id, model)
}
getOne = copmutedFn((id) => {
if (!this.records.has(id)) {
this.fetchOne(id)
}
return this.records.get(id)
})
}computedFn函数来自mobx-utils,基本上是一个接受参数的计算器。
我将所有记录保存在商店的records属性中,以维护应用程序不同部分之间的引用。
我现在要做的是使这些记录与我的数据库保持最新,并且我计划使用固定间隔轮询方法来完成这项工作。
然而,我不想重新获取我存储的每一条记录,一些记录可能不再被观察到,我只想获取应用程序当前需要的那些记录。
有没有办法让我查看,例如,records属性,并检查哪些ids被观察到,哪些没有被观察到?
有没有其他的结构可以在不侵入MobX内部的情况下实现如此精细的控制呢?
发布于 2020-06-11 02:28:14
您可以尝试使用mobx atoms,基本上它是一种创建您自己的数据结构的方法。
它有两个您可能会使用的回调:onBecomeObserved和onBecomeUnobserved。当某些东西开始和停止观察你的数据结构时,它们会通知你。
https://stackoverflow.com/questions/62308358
复制相似问题