Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 维护与数据库同步的MobX对象_Javascript_Real Time_Mobx - Fatal编程技术网

Javascript 维护与数据库同步的MobX对象

Javascript 维护与数据库同步的MobX对象,javascript,real-time,mobx,Javascript,Real Time,Mobx,我正在将MobX与我的React应用程序一起使用,以管理我的全局状态。基本上,我是在镜像后端数据(关系数据库)的结构,并根据需要获取数据 目前我的结构如下: 类模型{ @可观测id @可观测propA=0 建造师(doc){ this.id=doc.id this.propA=doc.propA } @行动 更新=(文档)=>{ this.propA=doc.propA } @计算 获取computedProp(){ 把这个还给我 } } 班级商店{ records=observable.map

我正在将MobX与我的React应用程序一起使用,以管理我的全局状态。基本上,我是在镜像后端数据(关系数据库)的结构,并根据需要获取数据

目前我的结构如下:

类模型{
@可观测id
@可观测propA=0
建造师(doc){
this.id=doc.id
this.propA=doc.propA
}
@行动
更新=(文档)=>{
this.propA=doc.propA
}
@计算
获取computedProp(){
把这个还给我
}
}
班级商店{
records=observable.map()
@行动
fetchOne=async(id)=>{
const doc=等待获取(url+id)
常数模型=新模型(doc)
此.records.set(id,型号)
}
getOne=copmutedFn((id)=>{
如果(!this.records.has(id)){
此.fetchOne(id)
}
返回此.records.get(id)
})
}
computedFn
函数来自mobx utils,基本上是一个接受参数的计算函数

我将所有记录保存在store
records
属性中,以维护应用程序不同部分之间的引用

我现在要做的是用我的数据库保持这些记录的最新状态,我计划用固定时间间隔的轮询方法

但是,我不想重新读取我存储的所有记录,有些记录可能不再被观察到,我只想获取应用程序上当前需要的记录

例如,我是否有办法查看
记录
道具并检查哪些ID被观察到,哪些没有

是否有其他结构可以允许在不侵入MobX内部的情况下进行更精细的控制?

您可以尝试使用,基本上这是一种创建您自己的数据结构的方法


它有两个回调可以使用:
onBecomeObserved
onBecomeUnobserved
。当某些东西开始或停止观察您的数据结构时,它们会通知您。

我不知道mobx atoms!我会记住的!它们似乎有效,但产生了大量样板文件。最后,我使用mobx utils中的
now
可观察值,使
getOne
计算每隔一段时间重新计算一次,并对其添加了一个更新调用。