Ngrx 8 - отправить несколько других, если действуют условия с несколькими действиями - PullRequest
1 голос
/ 23 марта 2020

Я ищу решение для ситуации ниже:

 startMultpileActionDepensOnType$ = createEffect(() => this.actions$.pipe(
        ofType(startMultpileActionDepensOnType),
        withLatestFrom(this.store$.select(selectTypeActions)),
        map(([action, select]) => {
                const actionType = select.type.toLowerCase();

                if (actionType === ActionTypeEnum.TYPE_FIRST.toLowerCase()) {
                    return [getInitialDataStatus({statusType: 'disabled'}),
                        fetchImportantDataFirst()];
                } else if (actionType === ActionTypeEnum.TYPE_SECOND.toLowerCase()) {
                    return [getInitialDataStatus({}),
                        fetchImportantDataSecond());
                } else if (actionType === ActionTypeEnum.TYPE_THIRD.toLowerCase()] {
                    return [getInitialDataStatus({}),
                        fetchImportantDataThidr()];
                }
            }
        )
    ));

Итак: - Я хотел бы запустить несколько действий в массиве, - и использовать несколько других, если регистр

I попытался исправить это по словарю ... но, возможно, есть гораздо лучшее решение.

1 Ответ

1 голос
/ 23 марта 2020

Ниже показано, как вы можете использовать объект, чтобы вырезать if / else, кроме того, может быть, кое-что можно улучшить с помощью сравнения enum здесь, это просто кажется немного неловким

const functionMap={
[ActionTypeEnum.TYPE_FIRST.toLowerCase()]:[getInitialDataStatus({statusType: 'disabled'}),fetchImportantDataFirst()],
[ActionTypeEnum.TYPE_SECOND.toLowerCase()]:[getInitialDataStatus({}),
                        fetchImportantDataSecond()],
[ActionTypeEnum.TYPE_THIRD.toLowerCase()]:[getInitialDataStatus({}),
                        fetchImportantDataThidr()]
}

 startMultpileActionDepensOnType$ = createEffect(() => this.actions$.pipe(
        ofType(startMultpileActionDepensOnType),
        withLatestFrom(this.store$.select(selectTypeActions)),
        map(([action, select]) => {
                const actionType = select.type.toLowerCase();
                return functionMap[actionType]

            }
        )
    ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...