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

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

可以做到,但我会直接使用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()
  }
}))
本文链接:https://www.f2er.com/2621759.html

大家都在问