【问题标题】:Performing asynchronous actions with parameters mobx-state-tree使用参数 mobx-state-tree 执行异步操作
【发布时间】:2019-07-02 11:25:02
【问题描述】:

使用 mobx-state-tree 我想将参数传递给异步操作。他们建议使用生成器功能。他们的例子没有提供使用参数的例子,我发现如何做也不是很明显。

我尝试将流函数包装在普通函数中以向下传递参数。但是它不起作用。我已经尝试了以下示例,包括一些额外的摆弄。

setAvailability: function (id, status) {
        console.log("inside outer")
        flow(function* () {
            console.log("inside inner")
            try {
                yield UpdateAvailability(id, status)
                const { data } = yield self.fetch(GetTutors)
                self.data = data;
            } catch (e) {
                console.log(e.stack)
            }
        })
    },

setAvailability: flow*(function(id, status) {
            console.log("inside inner")
            try {
                yield UpdateAvailability(id, status)
                const { data } = yield self.fetch(GetTutors)
                self.data = data;
            } catch (e) {
                console.log(e.stack)
            }
        })
    },

在流函数中传递参数时它不会编译,当我包装函数时它只打印 console.log("inside inner")

如何将参数传递给异步操作函数?

【问题讨论】:

    标签: javascript reactjs asynchronous action mobx-state-tree


    【解决方案1】:

    我尝试了一个简单的示例,如下所示,它可以工作 -

    import {flow, types} from "mobx-state-tree"
    
    const Store = types.model({})
        .actions(self => ({
            fetchProjects: flow(function* fetchProjects(par1, par2) { // <- note the star, this a generator function!
                console.log('flow called');
                console.log(par1);
                console.log(par2);
            })
        }));
    
    export const store = Store.create({});
    // async actions will always return a promise resolving to the returned value
    store.fetchProjects('test parameter', 'test parameter 2').then(() => {
        console.log("done")
    });
    

    我认为它只是 * 在您的第二个示例中的错误位置。

    【讨论】:

    • 会投票,但是我没有足够的积分。谢谢你的回答:)
    猜你喜欢
    • 2019-11-26
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多