当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript types.model方法代码示例

本文整理汇总了TypeScript中mobx-state-tree.types.model方法的典型用法代码示例。如果您正苦于以下问题:TypeScript types.model方法的具体用法?TypeScript types.model怎么用?TypeScript types.model使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在mobx-state-tree.types的用法示例。


在下文中一共展示了types.model方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: test

test("it logs", t => {
    const Todo = mst.types
        .model({
            title: ""
        })
        .actions(self => ({
            helper() {},
            setTitle(newTitle) {
                ;(self as any).helper() // should not be logged
                self.title = newTitle
            }
        }))

    const Store = mst.types.model({
        todos: mst.types.array(Todo)
    })

    const store = Store.create({
        todos: [{ title: "test " }]
    })
    mst.addMiddleware(store, simpleActionLogger)

    store.todos[0].setTitle("hello world")

    t.deepEqual((console.log as any).args, [["[MST] /todos/0/setTitle"]])
})
开发者ID:lelandyolo,项目名称:mobx-state-tree,代码行数:26,代码来源:simple-action-logger.ts

示例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)
})
开发者ID:lelandyolo,项目名称:mobx-state-tree,代码行数:35,代码来源:UndoManager.ts

示例3: test

test("it logs flows", async t => {
    const Todo = mst.types
        .model({
            title: ""
        })
        .actions(self => ({
            helper() {},
            helper2: flow(function* helper2() {
                return Promise.resolve(3)
            })
        }))
        .actions(self => ({
            setTitle: flow(function* setTitle(newTitle) {
                self.helper() // should not be logged
                yield self.helper2() // should be logged
                self.title = newTitle
                return
            })
        }))

    const Store = mst.types.model({
        todos: mst.types.array(Todo)
    })

    const store = Store.create({
        todos: [{ title: "test " }]
    })
    mst.addMiddleware(store, actionLogger)

    await store.todos[0].setTitle("hello world")
    t.deepEqual((console.log as any).args.map(([x]) => x), [
        "[MST] #5 action - /todos/0/setTitle",
        "[MST] #5 flow_spawn - /todos/0/setTitle",
        "[MST] #5 flow_spawn - /todos/0/helper2",
        "[MST] #5 flow_return - /todos/0/helper2",
        "[MST] #5 flow_return - /todos/0/setTitle"
    ])
})
开发者ID:lelandyolo,项目名称:mobx-state-tree,代码行数:38,代码来源:action-logger.ts

示例4: 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)
})
开发者ID:lelandyolo,项目名称:mobx-state-tree,代码行数:49,代码来源:TimeTraveller.ts


注:本文中的mobx-state-tree.types.model方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。