0
我正在尋找一種方法來獲取Meteor中的反應性數據源的舊值。說我有這樣的代碼:如何獲取流星中反應性數據源的舊值?
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
舊值,使用舊值與新值來決定,如果語句的執行,如:
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,但找不到解決方案。你知道任何解決方案或包/模塊來解決這個問題嗎?
我知道我可以這樣做,事實上我一直在這樣做。但它對我來說並不覺得「正確」,根本看不到「漂亮」。我更喜歡更直觀的方式,比如'foo.getOld()'。我沒有這個用於集合的'.getOld'(事實上從來不需要它),但對於'ReactiveVar''',ReactiveDict'它真的使我使用緩存變量困擾。無論如何感謝您的回答:) – Khang