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
bun add @prodantix/sdk @prodantix/react| Export | What it is |
|---|---|
| ProdantixProvider | Creates the client once per page and provides it |
| useProdantix | The client for the page, or null |
| useMessenger | A handle that opens and closes the widget, or null |
| prodantixConfig | The config when both key and host are present, else null |
| skipReason | Why this mount will send nothing, or null |
| resetProdantixForTest | Clears 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.
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>
);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.
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.
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.
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));
}