您的位置:首页 > Web前端

[MST] Use Volatile State and Lifecycle Methods to Manage Private State

2018-01-31 02:56 741 查看
MST has a pretty unique feature: It allows you to capture private state on models, and manage this state by using lifecycle hooks. For example by setting up a WebSocket connection and disposing of the connection automatically as soon as the instance gets removed from the store. In this lesson, we will leverage cancellable fetches to abort in-flight requests when appropriate

In this lesson you will learn:

Aborting window.fetch requests :-).

Storing private, volatile, internal state in the function closure

A second life-cycle hook: beforeDestroy

The whole point for this post is showing how to abort fetch request:

export const Group = types
.model({
users: types.map(User)
})
.actions(self => {
let controller

return {
afterCreate() {
self.load()
},
load: flow(function* load() {
controller = window.AbortController && new window.AbortController()
try {
const response = yield window.fetch(`http://localhost:3001/users`, {
signal: controller && controller.signal
})
applySnapshot(self.users, yield response.json())
console.log("success")
} catch (e) {
console.log("aborted", e.name)
}
}),
reload() {
if (controller) controller.abort()
self.load()
},
beforeDestroy() {
if (controller) controller.abort()
}
}
})


https://developer.mozilla.org/en-US/docs/Web/API/AbortController

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: