0
私はMeteorで反応性のあるデータソースの古い価値を得る方法を模索しています。私はこのコードを持って言う:メテオの反応性データソースの古い値を取得するには?
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);
:
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);
私が欲しいものは同様に、if文の実行を決定する新しい値で、この古い値を使用し、foo
の古い値を取得するには何とかです私は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