Как ждать или слушать Url изменился с помощью rxjs и redux-observable? - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь показать модальное всплывающее окно после получения данных ответа и после перехода на другую страницу.Горячая реализация этого правильно?

Iuse React-наблюдаемый и rxjs .Я создал эпос, используя запросы к серверу и изменяя history.location.Он отлично работает

action$.pipe(
    ofType(myActionLading),
    mergeMap(action => of(convertDataToServer(action.payload))),
    mergeMap(data =>
      from(convertToDataAPI(data)).pipe(
        mergeMap(response => of(convertCustomerFromServer(response.
        mergeMap(() => {
         return of(
          actionGetDataInfoLoading({ id }),
          );
        }),
        tap(() => history.push('/newRoute')),
takeUntil(// I have to verify if I am already on my newRoute and then show the popUp),
        finalize(() => console.log('!!! FIN !!!') || 
          modals.getModalSuccess()),
   ),
    ),

Я хочу видеть модальное всплывающее окно «Успех» после того, как я нахожусь на новом маршруте.Поэтому я хочу прослушать history.push или проверить, нахожусь ли я на новом маршруте и только потом показывать модальный

1 Ответ

1 голос
/ 26 апреля 2019

Я не верю, что возможно выполнить эту логику так, как вы ее объяснили (с react-router по крайней мере).

Однако, если /newRoute достижимо только благодаря успеху этого действия, вы можете просто открыть модальный режим, когда монтируется компонент, соответствующий newRoute.

В противном случае укажите параметр запроса, чтобы определить, хотите ли вы открыть модал.

Например:

// someEpic.js
tap(() => history.push('/newRoute?showModal=true')

...

//newRoute.jsx (The component)
export class NewRoute extends React.Component {
   ...
   componentWillMount() {
       const showModal = this.props.... // logic to get query param of showModal.

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