NgRx

Плагин NgRx для OpenReplay.

NgRx

Этот плагин позволяет фиксировать действия/состояние NgRx и проверять их позже при воспроизведении записей сессий. Это очень полезно для понимания и устранения проблем.

npm i @openreplay/tracker-ngrx --save

Добавьте сгенерированный meta-reducer в ваши imports. Подробнее см. в документации NgRx.

Если ваш сайт — одностраничное приложение (SPA)

Section titled Если ваш сайт — одностраничное приложение (SPA)
import { StoreModule } from '@ngrx/store';
import trackerNgRx from '@openreplay/tracker-ngrx';
import { tracker } from '@openreplay/tracker';

tracker.configure({
  projectKey: 'YOUR_PROJECT_KEY',
  ingestPoint: "https://openreplay.mydomain.com/ingest", // when dealing with the self-hosted version of OpenReplay
});
const metaReducers = [tracker.use(trackerNgRx(<options>))]; // check list of available options below

tracker.start();

//...
@NgModule({
  imports: [StoreModule.forRoot({}, { metaReducers })]
})
export class AppModule {}

Если ваше веб-приложение рендерится на стороне сервера (SSR)

Section titled Если ваше веб-приложение рендерится на стороне сервера (SSR)

Следуйте приведённому ниже примеру, если ваше приложение использует SSR. Убедитесь, что tracker.start() вызывается после запуска приложения (в useEffect или componentDidMount).

import { StoreModule } from '@ngrx/store';
import OpenReplay from '@openreplay/tracker/cjs';
import trackerNgRx from '@openreplay/tracker-ngrx/cjs';
//...
const tracker = new OpenReplay({
  projectKey: PROJECT_KEY
});
const metaReducers = [tracker.use(trackerNgRx(<options>))]; // check list of available options below
//...
  @NgModule({
    imports: [StoreModule.forRoot({}, { metaReducers })]
  })
  export class AppModule {}
}

Вы можете настроить поведение middleware для очистки ваших данных.

trackerNgRx({
  actionFilter: action => action.type !== 'DRAW', // only actions which pass this test will be recorded
  actionTransformer: action => action.type === 'LOGIN' ? null : action,
  actionType: action => action.type // action type for search, that's the default one
  stateTransformer: state => {
    const { jwt, ..._state } = state;
    return _state;
  },
})

Остались вопросы?

Section titled Остались вопросы?

Возникли сложности с настройкой этого плагина? Подключайтесь к нашему Slack или загляните на наш Форум и получите помощь от нашего сообщества.