Liigu põhisisu juurde

Raamistiku adapterid

Reacti ümbris

Üks pakkuja ja kaks konksu TypeScripti SDK peal. See paigaldab ühe kliendi lehe kohta, nii et Reacti range režiim ei kahekordista sinu sündmusi.

Kus see on avaldatud

@prodantix/react on npm. It wraps @prodantix/sdk, so install both.

Paigaldus

Bash
bun add @prodantix/sdk @prodantix/react
ExportWhat it is
ProdantixProviderCreates the client once per page and provides it
useProdantixThe client for the page, or null
useMessengerA handle that opens and closes the widget, or null
prodantixConfigThe config when both key and host are present, else null
skipReasonWhy this mount will send nothing, or null
resetProdantixForTestClears the once-per-page install, for tests

Pakkuja

Paigalda ProdantixProvider üks kord, juure lähedale. See loob veebikliendi esimesel paigaldusel ja kasutab seda edaspidi uuesti, sest teise loomine parandaks History API-t kaks korda ja kahekordistaks iga automaatselt püütud sündmuse.

TypeScript
import { ProdantixProvider } from '@prodantix/react';

export const Providers = ({ children }: { children: ReactNode }) => (
  <ProdantixProvider
    options={{
      apiKey: process.env.NEXT_PUBLIC_PRODANTIX_KEY,
      host: 'https://eu.api.prodantix.com',
      messengerHost: 'https://eu.edge.prodantix.com',
    }}
  >
    {children}
  </ProdantixProvider>
);
Sõnumitooja ilmub ainult siis, kui annad messengerHost ja projektil on see konsoolis sisse lülitatud. Ilma seadistuse ja puhvrita ei renderdu midagi, sest vaikimisi käivitusnupp oleks kliendi lehele maalitud oletus.

Sisselogitud inimese nimetamine

person ütleb pakkujale, kes on sisse logitud, atribuudina, mitte väljakutsena, nii et sisse- ja väljalogimine jõuavad kliendini nende väärtustena, mis nad on. Sellel on kolm olekut ja iga üks ütleb midagi muud. undefined tähendab, et see pind veel ei tea, sest tema autentimine alles hüdreerub, ja pakkuja ei tee midagi. Väärtus tuvastab: pakkuja kutsub esimese peale identify ja uuesti iga kord, kui distinctId muutub, kandes kaasas SDK enda tunnuseid, avatari, e-posti, nime ja telefoni. null tähendab, et pind küsis seanssi ja ei leidnud kedagi, ning pakkuja lähtestab kliendi siis ja ainult siis, kui see on veel tuvastatud, mis pöörab anonüümset id-d, nii et järgmine külastaja selles brauseris ei ole väljunud inimene. Just see reegel hoiab väljalogimist seal, kus väljalogimine on kõva navigeerimine ja üleminekut väärtuselt null-ile ei renderdata kunagi. Sellepärast ei tohi null ka kunagi tähendada laadimist: sisse logitud inimene, kes lehe uuesti laeb, lähtestataks enne autentimise hüdreerumist. Pind, mis ei küsi mingit seanssi, maandumisleht või dokumentatsioonileht, annab undefined, ja puuduv atribuut loetaksegi juba undefined-iks.

TypeScript
import { ProdantixProvider } from '@prodantix/react';

export const Providers = ({ children }: { children: ReactNode }) => {
  const { session, status } = useSession();

  // undefined while auth hydrates, null once it has resolved to nobody,
  // the subject once it has resolved to someone.
  const person = status === 'loading' ? undefined : session ? { distinctId: session.sub } : null;

  return (
    <ProdantixProvider
      options={{
        apiKey: process.env.NEXT_PUBLIC_PRODANTIX_KEY,
        host: 'https://eu.api.prodantix.com',
        person,
      }}
    >
      {children}
    </ProdantixProvider>
  );
};

Konksud

useProdantix tagastab lehe kliendi või null serveris, enne efekti käivitumist ja väljaspool pakkujat. useMessenger tagastab pideme vidina avamiseks ja sulgemiseks ning püsib null, kuni projekti seadistus on loetud ja ütleb, et see on sisse lülitatud.

TypeScript
import { useMessenger, useProdantix } from '@prodantix/react';

export const HelpButton = () => {
  const prodantix = useProdantix();
  const messenger = useMessenger();

  // Both are null until the provider effect has run, so neither is assumed.
  return (
    <button
      onClick={() => {
        prodantix?.capture('help.opened');
        messenger?.open();
      }}
      type="button"
    >
      Get help
    </button>
  );
};

Kui see midagi ei saada

Rakendus tarnitakse samamoodi ka väljalülitatud Prodantixiga, seega pole puuduv võti või host viga. prodantixConfig ütleb, kas mõlemad väärtused on olemas, ja skipReason selgitab ühe reaga, miks paigaldus midagi ei saada, selle asemel et vaikselt tagasi pöörduda.

TypeScript
import { prodantixConfig, skipReason } from '@prodantix/react';

const env = {
  host: process.env.NEXT_PUBLIC_PRODANTIX_HOST,
  key: process.env.NEXT_PUBLIC_PRODANTIX_KEY,
};

// null when either value is missing: the app runs with Prodantix switched off.
if (prodantixConfig(env) === null) {
  console.warn(skipReason(env, null));
}