Passa al contenuto principale

Applicazioni React

Setup

Innanzitutto, è necessario fare il setup del connettore seguendo la sezione Setup, copiando il file discovery-cms-connector.js dentro la cartella public e aggiungendo all'interno del file App.js il seguente script:

<script async={true} src={'discovery-cms-connector.js'} />

Generazione pagine

Per recuperare il contenuto di una pagina viene utilizzato l'hook useDiscoveryPage() che prende in input due parametri, ovvero lo slug utilizzato per la pagina e un oggetto con delle opzioni. La visualizzazione dei dati nell'html viene effettuata attraverso <DiscoveryContext> e l'elemento <DiscoveryComponents>.

Di seguito un esempio di utilizzo di quanto appena descritto:

import {DiscoveryContext, DiscoveryComponents, useDiscoveryPage} from '@discoverycms/connector';

function Page() {
const data = useDiscoveryPage('/home', {
/// options for the API
token: router.query.token
});

if (data === null) {
return;
}

return (
<DiscoveryContext.Provider value={data}>
<DiscoveryComponents />
</DiscoveryContext.Provider>
)
}

In questo esempio, innanzitutto recuperiamo i dati della pagina. Una volta recuperati i dati, li forniamo al DiscoveryContext e successivamente usiamo DiscoveryComponents per creare tutti i componenti della pagina.

Quando viene creato un componente nell'applicazione React si assume che riceva un id come parametro (id associato al componente lato Discovery), in seguito utilizzando il metodo useComponentData(), al quale viene passato l'id, si ricavano i dati. Quindi, il nostro componente dovrebbe avere una struttura simile a questa:

import {useComponentData} from '@discoverycms/connector';

function Component({componentId}) {
const data = useComponentData(componentId);

return(
<div data-discovery-id={componentId}>
...
</div>
)
}

L'utilizzo del contesto React non è obbligatorio. E' infatti possibile recuperare i dati dei singoli componenti dal payload della risposta applicando una propria logica. Tuttavia questo approccio non è consigliato in quanto questa procedura viene semplificata dal connettore tramite l'utilizzo del contesto e devono quindi sussistere condizioni particolari per cui non debba essere sfruttata.

Infine, l'utilizzo del contesto non è necessario con i Content in quanto essi non includono una rappresentazione grafica ma solamente dati, ed è quindi comunque necessario realizzare manualmente la struttura della pagina.