getState()

Die getState()-Methode gibt eine Kopie der Adobe Client Data Layer (ACDL) computed state zurück: das Ergebnis der Zusammenführung aller Daten, die bisher gepusht wurden.

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

Diese Methode ist nur nach dem Laden der ACDL vorhanden. Wenn der Code zuvor möglicherweise ausgeführt wurde, rufen Sie ihn über eine Funktion auf, die Sie per Push übertragen. Siehe Aufrufen von Methoden sicher.

Abrufen des gesamten berechneten Status entire-state

getState() ohne Argumente aufrufen:

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

Die Konsole zeigt das folgende Objekt an:

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

Wenn nichts gepusht wurde, gibt getState() ein leeres -Objekt ({}) zurück.

Wert unter einem Pfad abrufen paths

Übergeben Sie einen Pfad, um einen Wert aus dem berechneten Status zu erhalten. Trennen Sie die Schlüssel im Pfad durch Punkte:

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

Die folgenden Regeln gelten für Pfade:

  • Array-Elemente: Verwenden Sie den Index des Elements als Schlüssel, z. B. cart.items.0.sku. ACDL 3.x unterstützt keine Klammernotation wie cart.items[0].sku.
  • Schlüssel, die Punkte enthalten: Übergeben Sie den Pfad als Schlüssel-Array anstelle einer Zeichenfolge, z. B. ["component", "hero.1", "title"].
  • Fehlende Werte: Wenn kein Schlüssel im Pfad vorhanden ist, gibt getState() undefined zurück. Es gibt keinen Fehler.
  • Rückgabetyp: Der Wert im Pfad kann ein beliebiger Typ sein, z. B. ein Objekt, ein Array, eine Zeichenfolge, eine Zahl oder ein boolescher Wert.

Zurückgegebene Werte sind Kopien copies

getState() gibt eine Kopie des berechneten Status zurück, nicht den berechneten Status selbst. Durch Ändern des zurückgegebenen -Objekts wird die Datenschicht nicht geändert:

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

Um den berechneten Status zu ändern, drücken Sie die Änderung mit push().

Bei jedem Aufruf wird der gesamte berechnete Status kopiert, auch wenn Sie einen Pfad übergeben. Auf Seiten mit einer großen Datenschicht sollten Sie vermeiden, getState() in Code aufzurufen, der häufig ausgeführt wird, z. B. ein Scroll-Handler. Lesen Sie den Wert einmal und verwenden Sie ihn erneut.

Status in einem Ereignis-Listener lesen in-listener

Wenn ein Ereignis-Listener ausgeführt wird, enthält der berechnete Status bereits die Daten aus der Push-Benachrichtigung, die ihn ausgelöst hat:

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