本文整理匯總了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
}