本文整理汇总了TypeScript中mobx-state-tree.applySnapshot函数的典型用法代码示例。如果您正苦于以下问题:TypeScript applySnapshot函数的具体用法?TypeScript applySnapshot怎么用?TypeScript applySnapshot使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了applySnapshot函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: addUndoState
.actions(self => {
let targetStore: any
let snapshotDisposer: any
let skipNextUndoState = false
return {
addUndoState(todos: any) {
if (skipNextUndoState) {
// skip recording if this state was caused by undo / redo
skipNextUndoState = false
return
}
self.history.splice(self.undoIdx + 1)
self.history.push(todos)
self.undoIdx = self.history.length - 1
},
afterCreate() {
targetStore = self.targetPath
? resolvePath(self, self.targetPath)
: getEnv(self).targetStore
if (!targetStore)
throw new Error(
"Failed to find target store for TimeTraveller. Please provide `targetPath` property, or a `targetStore` in the environment"
)
// TODO: check if targetStore doesn't contain self
// if (contains(targetStore, self)) throw new Error("TimeTraveller shouldn't be recording itself. Please specify a sibling as taret, not some parent")
// start listening to changes
snapshotDisposer = onSnapshot(targetStore, snapshot =>
(self as any).addUndoState(snapshot)
)
// record an initial state if no known
if (self.history.length === 0) (self as any).addUndoState(getSnapshot(targetStore))
},
beforeDestroy() {
snapshotDisposer()
},
undo() {
self.undoIdx--
skipNextUndoState = true
applySnapshot(targetStore, self.history[self.undoIdx])
},
redo() {
self.undoIdx++
skipNextUndoState = true
applySnapshot(targetStore, self.history[self.undoIdx])
}
}
})
示例2: flow
hydrate: flow(function* () {
if (__DEV__) {
// Inspect individual models
makeInspectable(self);
makeInspectable(Movies);
makeInspectable(InTheaters);
makeInspectable(Genres);
}
const storageKey = 'Store.settings';
const data = JSON.parse(yield AsyncStorage.getItem(storageKey));
if (data) {
applySnapshot(self.settings, data);
}
onSnapshot(self.settings, debounce(
snapshot => AsyncStorage.setItem(storageKey, JSON.stringify(snapshot)),
1200,
));
// Load all supplimental data
Genres.loadAllGenres();
Cinemas.loadAllCinemas();
self.isHydrated = true;
}),
示例3: restore
/**
* Update the current state with one that was sent to us by the
* Reactotron app.
*
* @param command A reactotron command.
*/
function restore(command: any) {
const trackedNode = trackedNodes[command.mstNodeName || "default"]
const state = command && command.payload && command.payload.state
if (trackedNode && trackedNode.node) {
const { node } = trackedNode
restoring = true
applySnapshot(node, state)
restoring = false
}
}
示例4: applySnapshot
function applySnapshot(model: any, state: any) {
applyingSnapshot = true
mst.applySnapshot(model, state)
applyingSnapshot = false
}