在mobx-state-tree中从同一模型的另一个动作中调用一个动作的良好实践是什么?

问题描述 投票:0回答:1

我正在尝试将多个函数包装在一个函数中。

我有这样的模型:

const CookModel = types.actions(self =>({
  talkToSousChefs:() => {
    // talk to sous-chefs
  },
  talkToWaiters: () => {
    // business logic
  },
  talkToVendors: () => {
    // business logic
  },
  runTalkRoutine: () => {
    // current code

    const root = getRoot<typeof CookModel>(self)

    root.talkToSousChefs()
    root.talkToVendors()
    root.talkToWaiters()

    // what's the best practice?
  }
}))

将这些动作包装在runTalkRoutine中的最佳方法是什么?

javascript mobx mobx-state-tree
1个回答
0
投票
runTalkRoutine: () => { self.talkToSousChefs() self.talkToVendors() self.talkToWaiters() }

如果您有任何异步操作,则可以使用yield

如果要自动完成,可以将runTalkRoutine移动到另一个动作块

const CookModel = types.actions(self =>({ talkToSousChefs:() => { // talk to sous-chefs }, talkToWaiters: () => { // business logic }, talkToVendors: () => { // business logic } })).actions(self => ({ runTalkRoutine: () => { // here you will have autocomplete on self self.talkToSousChefs() self.talkToVendors() self.talkToWaiters() } }))

© www.soinside.com 2019 - 2024. All rights reserved.