Zustand

Plugin Zustand pour OpenReplay.

Zustand

Ce plugin vous permet de capturer les mutations/l’état de Zustand et de les inspecter ultérieurement lors de la relecture des enregistrements de session. C’est très utile pour comprendre et corriger des problèmes.

npm i @openreplay/tracker-zustand

Initialisez le paquet @openreplay/tracker comme d’habitude et chargez-y le plugin. Appelez le plugin pour définir le nom du store ; cela renverra une instance de tracker de store nommé que vous pourrez appeler avec votre exemplaire de store en argument afin d’activer le suivi de ce store.

Si votre site web est une Single Page Application (SPA)

Section titled Si votre site web est une Single Page Application (SPA)
import Tracker from '@openreplay/tracker';
import trackerZustand from '@openreplay/tracker-zustand';

Si votre application web est rendue côté serveur (Server-Side-Rendered, SSR)

Section titled Si votre application web est rendue côté serveur (Server-Side-Rendered, SSR)
import Tracker from '@openreplay/tracker/cjs';
import trackerZustand from '@openreplay/tracker-zustand/cjs';
import create from "zustand";

const tracker = new Tracker({
  projectKey: YOUR_PROJECT_KEY,
});

const zustandPlugin = tracker.use(trackerZustand())
// name is optional, randomly generated 
// string if its undefined
const bearStoreLogger = zustandPlugin('bear_store')


const useBearStore = create(
  bearStoreLogger((set: any) => ({
    bears: 0,
    increasePopulation: () => set((state: any) => ({ bears: state.bears + 1 })),
    removeAllBears: () => set({ bears: 0 }),
  }))
)

Vous pouvez personnaliser le comportement du plugin grâce à des options permettant d’assainir vos données. Elles sont similaires à celles du plugin standard createLogger.

trackerZustand({
  filter (mutation, state) {
    // returns `true` if a mutation should be logged
    // `mutation` is a `{ type, payload }`
    return mutation.type !== "aBlacklistedMutation";
  },
  transformer (state) {
    // transforms the state before logging it.
    // for example return only a specific sub-tree
    return state.subTree;
  },
  mutationTransformer (mutation) {
    // mutations are logged in the format of `{ type, payload }`
    // we can format it any way we want.
    return mutation.type;
  },
})

Vous rencontrez des difficultés pour configurer ce plugin ? Rejoignez notre Slack ou consultez notre Forum et obtenez de l’aide auprès de notre communauté.