gpt4 book ai didi

javascript - 如何在 Meteor 中获取响应式(Reactive)数据源的旧值?

转载 作者:行者123 更新时间:2023-12-02 13:51:58 25 4
gpt4 key购买 nike

我正在寻找一种方法来获取 Meteor 中响应式(Reactive)数据源的旧值。假设我有这个代码:

const foo = new ReactiveVar(1);

Tracker.autorun(() => {
const fooNewVal = foo.get();

if (/* compare based on fooNewVal value */) {
// do something
}
});

foo.set(2);
foo.set(3);
foo.set(4);

我想要的是以某种方式获取foo的旧值,使用这个旧值和新值来决定if语句的执行,例如:

const foo = new ReactiveVar(1);

Tracker.autorun(() => {
const fooNewVal = foo.get();
const fooOldVal = foo.getOld();

if (fooNewVal - fooOldVal === 1) {
// do something
}

if (fooNewVal - fooOldVal === 2) {
// do something
}

});

foo.set(2);
foo.set(3);

我知道我可以使用普通变量在 autorun 函数末尾存储旧值:

const foo = new ReactiveVar(1);
let oldValue = 1;

Tracker.autorun(() => {
const fooNewVal = foo.get();

if (fooNewVal - oldValue === 1) {
// do something
}

if (fooNewVal - oldValue === 2) {
// do something
}

oldValue = fooNewVal;
});

foo.set(2);
foo.set(3);

虽然它有效,但对我来说看起来并不“正确”。我搜索了 Atmosphere 和 Npm 但找不到解决方案。您知道有什么解决方案或包/模块可以解决这个问题吗?

最佳答案

你正在做的事情很好。存储变量的先前版本是一种常见的做法。如果您从数据库中获取,则自动运行函数开头的数据仍将是旧值。当 react 变量更改时会触发自动运行,因此在您的情况下 foo 在输入时已经更改。

关于javascript - 如何在 Meteor 中获取响应式(Reactive)数据源的旧值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40957774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com