Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应';如果突变发生在另一个反应内,则只会触发一次副作用';副作用_Javascript_Mobx - Fatal编程技术网

Javascript 反应';如果突变发生在另一个反应内,则只会触发一次副作用';副作用

Javascript 反应';如果突变发生在另一个反应内,则只会触发一次副作用';副作用,javascript,mobx,Javascript,Mobx,vs 请在上面考虑两段代码。首先使用console.log(newValue)触发副作用仅一次。我希望像第二个例子那样被解雇三次 这是虫子吗?还是设计的?是的,这是设计的 基本上,你在反应中所做的一切都会自动包装在动作中,而你在动作中所做的一切都是事务性的,这将批量处理所有突变和更新 反应大致上是指自动运行(()=>操作(副作用)(表达式))的糖 更多信息:是的,这是设计的 基本上,你在反应中所做的一切都会自动包装在动作中,而你在动作中所做的一切都是事务性的,这将批量处理所有突变和更新 反应大致

vs

请在上面考虑两段代码。首先使用
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'; });