NgRx
Mit diesem Plugin können Sie NgRx-Aktionen und -Zustände erfassen und später beim Abspielen von Sitzungsaufzeichnungen untersuchen. Das ist sehr hilfreich, um Probleme zu verstehen und zu beheben.
Installation
Section titled Installationnpm i @openreplay/tracker-ngrx --save
Verwendung
Section titled VerwendungFügen Sie den generierten Meta-Reducer zu Ihren imports hinzu. Weitere Informationen finden Sie in der NgRx-Dokumentation.
Wenn Ihre Website eine Single Page Application (SPA) ist
Section titled Wenn Ihre Website eine Single Page Application (SPA) istimport { 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 {}
Wenn Ihre Web-App serverseitig gerendert wird (SSR)
Section titled Wenn Ihre Web-App serverseitig gerendert wird (SSR)Orientieren Sie sich am folgenden Beispiel, wenn Ihre App SSR verwendet. Stellen Sie sicher, dass tracker.start() aufgerufen wird, sobald die App gestartet ist (in useEffect oder 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 {}
}
Optionen
Section titled OptionenSie können das Verhalten der Middleware anpassen, um Ihre Daten zu bereinigen.
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;
},
})
Haben Sie Fragen?
Section titled Haben Sie Fragen?Haben Sie Probleme bei der Einrichtung dieses Plugins? Verbinden Sie sich mit unserem Slack und holen Sie sich Hilfe von unserer Community.