Какая хорошая практика вызывать действие из другого действия той же модели в дереве состояний mobx? - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь обернуть несколько функций в одну.

У меня есть такая модель:

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

1 Ответ

0 голосов
/ 21 апреля 2020

Это бы сделало, но я бы использовал self напрямую

  runTalkRoutine: () => {
    self.talkToSousChefs()
    self.talkToVendors()
    self.talkToWaiters()
  }

Если любое из ваших действий асин c, вы можете использовать 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()
  }
}))
...