本文整理汇总了TypeScript中mobx-state-tree.types.optional方法的典型用法代码示例。如果您正苦于以下问题:TypeScript types.optional方法的具体用法?TypeScript types.optional怎么用?TypeScript types.optional使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mobx-state-tree.types
的用法示例。
在下文中一共展示了types.optional方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: test
test("it can time travel same store and persist state", t => {
const W = types.model({
model: types.optional(TestModel, {}),
traveler: types.optional(TimeTraveller, { targetPath: "../model" })
})
const w = W.create()
const m = w.model
const tt = w.traveler
t.is(tt.canUndo, false)
t.is(tt.canRedo, false)
t.is(m.x, 1)
m.inc()
t.is(tt.canUndo, true)
t.is(tt.canRedo, false)
t.is(m.x, 2)
m.inc()
t.is(tt.canUndo, true)
t.is(tt.canRedo, false)
t.is(m.x, 3)
tt.undo()
t.is(m.x, 2)
t.is(tt.canUndo, true)
t.is(tt.canRedo, true)
// Clone of the store should inherit the same state!
const w2 = clone(w)
const m2 = w2.model
const tt2 = w2.traveler
tt2.undo()
t.is(m2.x, 1)
t.is(tt2.canUndo, false)
t.is(tt2.canRedo, true)
tt2.redo()
t.is(m2.x, 2)
t.is(tt2.canUndo, true)
t.is(tt2.canRedo, true)
// resets 'future'
m2.inc()
t.is(m2.x, 3)
t.is(tt2.canUndo, true)
t.is(tt2.canRedo, false)
})
示例2: test
test("on tree - group", t => {
const HistoryOnTreeStoreModel = types
.model({
x: 1,
history: types.optional(UndoManager, {})
})
.actions(self => {
setUndoManagerSameTree(self)
return {
inc() {
self.x += 1
}
}
})
const store = HistoryOnTreeStoreModel.create()
t.is(undoManager.canUndo, false)
t.is(undoManager.canRedo, false)
t.is(store.x, 1)
undoManager.startGroup(() => {
store.inc()
store.inc()
store.inc()
store.inc()
})
undoManager.stopGroup()
t.is(store.x, 5)
t.is(undoManager.canUndo, true)
undoManager.undo()
t.is(undoManager.canUndo, false)
t.is(undoManager.canRedo, true)
t.is(store.x, 2)
})
示例3:
import { types } from 'mobx-state-tree';
export const NavItem = types.model('NavItem', {
id: types.identifier(types.string),
text: types.string,
url: types.optional(types.string, ''),
subTitle: types.optional(types.string, ''),
icon: types.optional(types.string, ''),
img: types.optional(types.string, ''),
active: types.optional(types.boolean, false),
hideFromTabs: types.optional(types.boolean, false),
breadcrumbs: types.optional(types.array(types.late(() => Breadcrumb)), []),
children: types.optional(types.array(types.late(() => NavItem)), []),
});
export const Breadcrumb = types.model('Breadcrumb', {
title: types.string,
url: types.string,
});
示例4: canUndo
IModelType,
ISnapshottable,
IMiddlewareEvent,
IPatchRecorder,
IJsonPatch
} from "mobx-state-tree"
import { IObservableArray } from "mobx"
const Entry = types.model("UndoManagerEntry", {
patches: types.frozen,
inversePatches: types.frozen
})
const UndoManager = types
.model("UndoManager", {
history: types.optional(types.array(Entry), []),
undoIdx: 0
})
.views(self => ({
get canUndo() {
return self.undoIdx > 0
},
get canRedo() {
return self.undoIdx < self.history.length
}
}))
.actions(self => {
let skipping = false
let flagSkipping = false
let targetStore: IStateTreeNode
let replaying = false
示例5:
'POST_PRODUCTION',
]);
export const MovieLocale = types.model('MovieLocale', {
id: types.identifier,
locale: Locale,
contentRating: types.maybeNull(types.string),
title: types.maybeNull(types.string),
summary: types.maybeNull(types.string),
alternateTitle: types.maybeNull(types.string),
releaseDate: types.maybeNull(types.string),
});
export const Movie = types.model('Movie', {
id: types.identifier,
isPartial: types.optional(types.boolean, true),
title: types.maybeNull(types.string),
year: types.maybeNull(types.number),
summary: types.maybeNull(types.string),
runtime: types.maybeNull(types.number),
backdropUrl: types.maybeNull(types.string),
posterUrl: types.maybeNull(types.string),
releaseDate: types.maybeNull(types.string),
adult: types.maybeNull(types.boolean),
imdbId: types.maybeNull(types.string),
externalId: types.maybeNull(types.number),
tmdbId: types.maybeNull(types.number),
budget: types.maybeNull(types.number),
revenue: types.maybeNull(types.number),
homepage: types.maybeNull(types.string),
originalLanguage: types.maybeNull(types.string),
示例6: flow
ďťżimport { types, getEnv, flow } from 'mobx-state-tree';
import { ServerStat } from './ServerStat';
export const ServerStatsStore = types
.model('ServerStatsStore', {
stats: types.array(ServerStat),
error: types.optional(types.string, ''),
})
.actions(self => ({
load: flow(function* load() {
const backendSrv = getEnv(self).backendSrv;
const res = yield backendSrv.get('/api/admin/stats');
self.stats.clear();
self.stats.push(ServerStat.create({ name: 'Total dashboards', value: res.dashboards }));
self.stats.push(ServerStat.create({ name: 'Total users', value: res.users }));
self.stats.push(ServerStat.create({ name: 'Active users (seen last 30 days)', value: res.activeUsers }));
self.stats.push(ServerStat.create({ name: 'Total orgs', value: res.orgs }));
self.stats.push(ServerStat.create({ name: 'Total playlists', value: res.playlists }));
self.stats.push(ServerStat.create({ name: 'Total snapshots', value: res.snapshots }));
self.stats.push(ServerStat.create({ name: 'Total dashboard tags', value: res.tags }));
self.stats.push(ServerStat.create({ name: 'Total starred dashboards', value: res.stars }));
self.stats.push(ServerStat.create({ name: 'Total alerts', value: res.alerts }));
}),
}));