getState()

Il metodo getState() restituisce una copia di Adobe Client Data Layer (ACDL) stato calcolato: risultato dell’unione di tutti i dati inviati finora.

adobeDataLayer.getState(path?: string | string[]): any

Questo metodo esiste solo dopo il caricamento di ACDL. Se il codice potrebbe essere eseguito prima di allora, chiamalo da una funzione che invii. Vedi Chiamare i metodi in modo sicuro.

Ottieni l’intero stato calcolato entire-state

Chiama getState() senza argomenti:

window.adobeDataLayer = window.adobeDataLayer || [];
window.adobeDataLayer.push({ page: { title: "Getting started" } });
window.adobeDataLayer.push({ component: { "hero-1": { title: "Learn more", link: "learn-more.html" } } });

window.adobeDataLayer.push(function(dl) {
  console.log(dl.getState());
});

La console mostra il seguente oggetto:

{
  "page": {
    "title": "Getting started"
  },
  "component": {
    "hero-1": {
      "title": "Learn more",
      "link": "learn-more.html"
    }
  }
}

Se non è stato eseguito alcun push, getState() restituisce un oggetto vuoto ({}).

Ottieni un valore in un percorso paths

Passa un percorso per ottenere un valore dallo stato calcolato. Separa i tasti nel percorso con punti:

window.adobeDataLayer.push(function(dl) {
  dl.getState("component.hero-1");        // { title: "Learn more", link: "learn-more.html" }
  dl.getState("component.hero-1.title");  // "Learn more"
});

Ai percorsi si applicano le seguenti regole:

  • Elementi array: utilizzare l’indice dell’elemento come chiave, ad esempio cart.items.0.sku. ACDL 3.x non supporta la notazione tra parentesi, ad esempio cart.items[0].sku.
  • Chiavi contenenti punti: passare il percorso come matrice di chiavi anziché come stringa, ad esempio ["component", "hero.1", "title"].
  • Valori mancanti: se una chiave nel percorso non esiste, getState() restituisce undefined. Non genera un errore.
  • Tipo restituito: il valore nel percorso può essere di qualsiasi tipo, ad esempio un oggetto, un array, una stringa, un numero o un valore booleano.

I valori restituiti sono copie copies

getState() restituisce una copia dello stato calcolato, non dello stato calcolato stesso. La modifica dell’oggetto restituito non modifica il livello dati:

const state = adobeDataLayer.getState();
state.page.title = "Changed";
adobeDataLayer.getState("page.title");  // Still "Getting started"

Per cambiare lo stato calcolato, invia la modifica con push().

Ogni chiamata copia l’intero stato calcolato, anche quando si passa un percorso. Sulle pagine con un livello dati di grandi dimensioni, evita di chiamare getState() nel codice che viene eseguito molto spesso, ad esempio un gestore di scorrimento. Leggi il valore una volta e riutilizzalo.

Lettura dello stato in un listener di eventi in-listener

Quando viene eseguito un listener di eventi, lo stato calcolato include già i dati del push che lo ha attivato:

window.adobeDataLayer.push(function(dl) {
  dl.addEventListener("adobeDataLayer:change", function(event) {
    console.log("New page title:", dl.getState("page.title"));
  }, { path: "page.title" });
});
recommendation-more-help
experience-platform-help-collection