从 mobx-state-tree 中同一模型的另一个动作调用一个动作的好习惯是什么?

What's a good practice to call an action from another action of the same model in mobx-state-tree?

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

我有这样一个模型:

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 中的最佳方式是什么?

这样就可以了,但我会直接使用 self

  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()
  }
}))