就像在docs中一样,autorun可以用来对被调用的函数进行去抖动,所以最后一次调用是我们在一定时间内唯一被调用的函数。
但是我不知道如何在使用flow的action中使用它,有什么例子吗?
例如:
syncMobileToken: flow(function* syncMobileToken(token) {
self.isLoading = true
let response = yield cli.post("/notifications/sync_mobile_token", {
token: token,
device_id: Config.DEVICE_ID,
})
self.isLoading = false
}),如何在上面的示例中使用autorun?
发布于 2019-11-14 18:10:11
我不确定我是否完全理解了您的问题,但我的假设是,您希望在每次token更改时运行syncMobileToken方法,并添加一个延迟,以便该方法不会在每次按键或其他事件触发器时都运行。
如果是这样,那么您可以利用模型的afterCreate生命周期方法
myModel = types.model({}).actions(self => ({
afterCreate() {
addDisposer(self,
reaction(() => ({
token: self.token
}), () => {
await self.syncMobileToken(self.token)
},{
delay: 200
})
)
}
}))您需要将该反应包装在addDisposer中,以便在销毁/删除模型时停止激发该反应。
这是我首选的使用方式。老实说,我通常不使用autorun。
如果我的回答不能解决你的问题,请提供更多细节,说明你试图使用自动运行实现的目标。
https://stackoverflow.com/questions/58841091
复制相似问题