在mobx documentation中:
操作仅影响当前正在运行的函数,而不影响当前函数调度(但未调用)的函数!这意味着如果你有一个setTimeout,promise.then或async构造,并且在那个回调中更多的状态被改变了,那些回调也应该包含在行动中!
上面的意思是,我应该用runInAction
换行状态,如下所示:
class App {
@observable logined = false
@action async login(payload){
runInAction(() => {
setTimeout(() => {
this.logined = false
}, 1000)
})
}
}
上面的工作,但奇怪的是,如果我删除runInAction
块,代码仍然有效,这种行为与文档说的不一致。
请查看fiddle。
答案 0 :(得分:0)
“动作”使您可以在一个“批处理”中进行多个状态更改-如果只进行一个更改,则不需要它。