getState()

La méthode getState() renvoie une copie de l’état calculé de la couche de données client (ACDL) Adobe : résultat de la fusion de toutes les données transmises jusqu’à présent.

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

Cette méthode n’existe qu’après le chargement de l’ACDL. Si votre code peut s’exécuter avant, appelez-le à partir d’une fonction que vous poussez. Voir Méthodes d’appel sécurisées.

Obtention de l’état calculé entier entire-state

Appeler getState() sans arguments :

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 affiche l’objet suivant :

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

Si rien n’a été envoyé, getState() renvoie un objet vide ({}).

Obtenir une valeur à un chemin d’accès paths

Transmettez un chemin d’accès pour obtenir une valeur de l’état calculé. Séparez les clés du chemin par des points :

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"
});

Les règles suivantes s’appliquent aux chemins d’accès :

  • Éléments de tableau : utilisez l’index de l’élément comme clé, par exemple cart.items.0.sku. ACDL 3.x ne prend pas en charge la notation entre crochets, telle que cart.items[0].sku.
  • Clés contenant des points : transmettez le chemin d’accès sous la forme d’un tableau de clés plutôt que d’une chaîne, comme ["component", "hero.1", "title"].
  • Valeurs manquantes : si une clé du chemin n’existe pas, getState() renvoie undefined. Il ne renvoie pas d’erreur.
  • Type de valeur renvoyée : la valeur du chemin d’accès peut être de n’importe quel type, tel qu’un objet, un tableau, une chaîne, un nombre ou une valeur booléenne.

Les valeurs renvoyées sont des copies copies

getState() renvoie une copie de l’état calculé, et non l’état calculé lui-même. La modification de l’objet renvoyé ne modifie pas la couche de données :

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

Pour modifier l’état calculé, effectuez la modification avec push().

Chaque appel copie l’ensemble de l’état calculé, même lorsque vous transmettez un chemin d’accès. Sur les pages comportant une couche de données volumineuse, évitez d’appeler getState() dans un code qui s’exécute très souvent, tel qu’un gestionnaire de défilement. Lisez la valeur une fois et réutilisez-la.

Lire l’état dans un écouteur d’événement in-listener

Lorsqu’un écouteur d’événement 🔗 s’exécute, l’état calculé inclut déjà les données de la notification push qui l’a déclenché :

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