Redux-сага выступление | Сколько зрителей возможно? - PullRequest
0 голосов
/ 31 января 2020

Я использую React redux-saga и хочу знать, правильно ли я использую много наблюдателей? У меня сейчас 11 наблюдателей.

export default function* root(): SagaIterator {
  yield all([
    fork(watchBusinessUnit),
    fork(watchAwsClient),
    fork(watchForm),
    fork(watchAwsServices),
    fork(watchDeliveryAddress),
    fork(watchProducts),
    fork(watchAuth),
    fork(watchAuthBack),
    fork(watchPersonsCompany),
    fork(watchPersonsCustomer),
    fork(watchDeploy)
  ])
}

Однако я смог сделать DRY наблюдатель watchForm, который учитывает условия перед запуском соответствующей саги.

Должен ли я сделать DRY наблюдатель (с условием) как можно больше времени? как ниже?

function* watchForm(): SagaIterator {
  while (true) {
    const { body, route } = yield take(actions.TRIGGER_FORM)
    const token = yield select(jsonwebtoken)
    if (route === 'info') {
      yield call(infoForm, { ...body, token })
    }
    if (route === 'services') {
      yield call(servicesForm, { ...body, token })
    }
    if (route === 'altavia-users') {
      const { body1, body2 } = body
      yield call(servicesForm, { ...body1, token })
      yield call(personsForm, { ...body2, token })
    }
    if (route === 'persons') {
      yield call(personsForm, { ...body, token })
    }
    if (route === 'customer-users') {
      yield call(customerUsersForm, { ...body, token })
    }
    if (route === 'addresses') {
      yield call(addressesForm, { ...body, token })
    }
    if (route === 'products') {
      yield call(productsForm, { ...body, token })
    }
    if (route === 'summary') {
      yield call(summaryForm, { ...body, token })
    }
  }
}

Все мои другие наблюдатели вроде как

function* watchPersonsCompany(): SagaIterator {
  while (true) {
    const { companyId } = yield take(actions.TRIGGER_PERSONS_COMPANY)
    yield fork(sagaPersonsCompany, companyId)
  }
}

Это плохо для исполнения?

...