首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不了解MobX-utils fromResource的行为

不了解MobX-utils fromResource的行为
EN

Stack Overflow用户
提问于 2017-06-24 09:30:24
回答 1查看 153关注 0票数 0

这是来自mobx-utilsnow()实现的修改版本。根据我的理解,当autorun函数被触发时,"initial“将被记录下来,然后在1秒后记录Date.now()的值,然后每秒一次又一次地Date.now()

代码语言:javascript
复制
function createIntervalTicker(interval) {
    let subscriptionHandle
    return fromResource(
        sink => {
            subscriptionHandle = setInterval(
                () => sink(Date.now()),
                interval
            );
        },
        () => {
            clearInterval(subscriptionHandle);
        },
        'initial'
    );
}

autorun(() => {
  console.log(createIntervalTicker(1000).current())
})

然而,我每时每刻都在被“初始”注销。永远不会记录Date.now()的值。

似乎当调用sink(Date.now())时,它只是触发自动运行函数,而不是更新current()返回的值。

如果有任何建议,我将不胜感激。提前谢谢。

mobx@3.1.16 mobx-utils@2.0.2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-27 11:59:56

您的代码创建一个新的可观察对象,并在每次执行autorun时将其值传递给console.log。因此,您总是在浏览器控制台中看到initialconsole.log跟踪对初始可观察对象的更改,但mobx在每个反应中接收新的可观察对象。

解决方案:存储对初始可观察对象的引用并重用它

代码语言:javascript
复制
const ticker = createIntervalTicker(1000);
autorun(() => {
  console.log(ticker.current())
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44731896

复制
相关文章

相似问题

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