Meteor 一个包含多个键的大ReactiveVar,还是一个包含多个ReactiveVar的大哈希?
比如说,Meteor 一个包含多个键的大ReactiveVar,还是一个包含多个ReactiveVar的大哈希?,meteor,Meteor,比如说, var settingsA = new ReactiveVar({ a: { b : true, c : 1 }, d: true, }) var settingsB = { a: { b: new ReactiveVar(true), c: new ReactiveVar(1), }, d: new ReactiveVar(true), } 哪一个更好?对于设置A,很难只更新一个字段 最佳实践是什么。在可能的情况
var settingsA = new ReactiveVar({
a: {
b : true,
c : 1
},
d: true,
})
var settingsB = {
a: {
b: new ReactiveVar(true),
c: new ReactiveVar(1),
},
d: new ReactiveVar(true),
}
哪一个更好?对于设置A,很难只更新一个字段
最佳实践是什么。在可能的情况下,第二个示例更好,因为它具有更细粒度的反应性 使用第一个示例:
var auto1=Tracker.autorun(函数(){
doSomethingWith(settingsA.get().a.b);
});
var auto2=Tracker.autorun(函数(){
doSomethingElseWith(设置a.get().d);
});
如果你这样做
var old=settingsA.get();
d=5;
设置a.设置(旧);
然后将重新运行auto1
和auto2
,即使auto1
访问的数据没有更改
另一方面,使用第二个示例:
var auto1=Tracker.autorun(函数(){
doSomethingWith(setingsb.a.b.get());
});
var auto2=Tracker.autorun(函数(){
DOSOMETHINGELSWITH(设置SB.d.get());
});
执行settingsB.d.set(5)
只会导致auto2
重新运行,而不会导致auto1
现在,如果动态插入和删除散列中的键,则第二种情况可能不可能出现。在这种情况下,您应该考虑使用<代码> ReActudieICT < /C> > < P>可能的话,第二个例子更好,因为它具有更细粒度的反应性。 使用第一个示例:
var auto1=Tracker.autorun(函数(){
doSomethingWith(settingsA.get().a.b);
});
var auto2=Tracker.autorun(函数(){
doSomethingElseWith(设置a.get().d);
});
如果你这样做
var old=settingsA.get();
d=5;
设置a.设置(旧);
然后将重新运行auto1
和auto2
,即使auto1
访问的数据没有更改
另一方面,使用第二个示例:
var auto1=Tracker.autorun(函数(){
doSomethingWith(setingsb.a.b.get());
});
var auto2=Tracker.autorun(函数(){
DOSOMETHINGELSWITH(设置SB.d.get());
});
执行settingsB.d.set(5)
只会导致auto2
重新运行,而不会导致auto1
现在,如果动态插入和删除散列中的键,则第二种情况可能不可能出现。在这种情况下,您应该考虑使用<代码> ReActudieICT < /代码> .<