首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >维护与数据库同步的MobX对象

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

Stack Overflow用户
提问于 2020-06-11 00:22:12
回答 1查看 78关注 0票数 0

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

目前我有以下结构:

代码语言:javascript
复制
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内部的情况下实现如此精细的控制呢?

EN

回答 1

Stack Overflow用户

发布于 2020-06-11 02:28:14

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62308358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档