Javascript 反应';如果突变发生在另一个反应内,则只会触发一次副作用';副作用
vs 请在上面考虑两段代码。首先使用Javascript 反应';如果突变发生在另一个反应内,则只会触发一次副作用';副作用,javascript,mobx,Javascript,Mobx,vs 请在上面考虑两段代码。首先使用console.log(newValue)触发副作用仅一次。我希望像第二个例子那样被解雇三次 这是虫子吗?还是设计的?是的,这是设计的 基本上,你在反应中所做的一切都会自动包装在动作中,而你在动作中所做的一切都是事务性的,这将批量处理所有突变和更新 反应大致上是指自动运行(()=>操作(副作用)(表达式))的糖 更多信息:是的,这是设计的 基本上,你在反应中所做的一切都会自动包装在动作中,而你在动作中所做的一切都是事务性的,这将批量处理所有突变和更新 反应大致
console.log(newValue)触发副作用代码>仅一次。我希望像第二个例子那样被解雇三次
这是虫子吗?还是设计的?是的,这是设计的
基本上,你在反应
中所做的一切都会自动包装在动作
中,而你在动作
中所做的一切都是事务性的,这将批量处理所有突变和更新
反应大致上是指自动运行(()=>操作(副作用)(表达式))的糖
更多信息:是的,这是设计的
基本上,你在反应
中所做的一切都会自动包装在动作
中,而你在动作
中所做的一切都是事务性的,这将批量处理所有突变和更新
反应大致上是指自动运行(()=>操作(副作用)(表达式))的糖
更多信息:谢谢你@Danila。那么,在我的问题中,我怎样才能实现这样的目标呢?e、 g.将3个项目从一个动作中逐个推到一个可观察的数组中。因为我想知道每一个项目都被推到了我的可观察数组中。(我不认为像setTimeout(()=>{obsrvArr.push(x);},0)
那样破坏同步是一个好方法,因为它可能会很危险……)也许可以使用原始autorun
来实现它?对不起,我不明白你的意思。没关系,它无论如何都不起作用,只是尝试一下而已:)嗯,不太确定除了设置超时之外还有什么可以帮助你的setTimeout
hackHey@Danila。无论如何,谢谢你的善意帮助!!谢谢你,丹妮拉。那么,在我的问题中,我怎样才能实现这样的目标呢?e、 g.将3个项目从一个动作中逐个推到一个可观察的数组中。因为我想知道每一个项目都被推到了我的可观察数组中。(我不认为像setTimeout(()=>{obsrvArr.push(x);},0)
那样破坏同步是一个好方法,因为它可能会很危险……)也许可以使用原始autorun
来实现它?对不起,我不明白你的意思。没关系,它无论如何都不起作用,只是尝试一下而已:)嗯,不太确定除了设置超时之外还有什么可以帮助你的setTimeout
hackHey@Danila。无论如何,谢谢你的善意帮助!!
var obj = mobx.observable({ arr: [{}, {}, {}] });
mobx.reaction(() => obj.arr.map(x => x.foo), (newValue) => {
console.log(newValue);
});
var trigger = mobx.observable({ flag: false });
mobx.reaction(() => trigger.flag, newValue => {
obj.arr.forEach((x, i) => { x.foo = 'bar'; });
});
trigger.flag = true;
var obj = mobx.observable({ arr: [{}, {}, {}] });
mobx.reaction(() => obj.arr.map(x => x.foo), (newValue) => {
console.log(newValue);
});
obj.arr.forEach((x, i) => { x.foo = 'bar'; });