Daten von der React-Komponente lesen? [Duplikat]

Dec 01 2020

Ich möchte in der Lage sein, die mit einer Reaktionskomponente verknüpften Daten auf einer Webseite eines Drittanbieters zu lesen, die React verwendet. Ich möchte dies mit Javascript in den Chrome Dev-Konsolentools auf dieser Seite lesen können. Ist das möglich?

Zum Beispiel habe ich ein TR-Element, das durch Reagieren gezeichnet wird. Ich möchte diese TR mit regulärem document.getElementById () abrufen und diese dann verwenden, um die zugrunde liegenden Reaktionsdaten abzurufen.

Mit der React Developer Tools-Erweiterung kann ich meine Daten nur unter props.data sehen - wie kann ich das lesen?

Bitte beachten Sie, dass ich React hier als Black Box behandle.

Hinweis: Gemäß dieser Antwort kann ich ein Reaktionsobjekt von einem DOM-Element abrufen, und es funktioniert: Reagieren - Abrufen einer Komponente von einem DOM-Element zum Debuggen

window.findReactComponent = function(el) {
  for (const key in el) {
    if (key.startsWith('__reactInternalInstance$')) {
      const fiberNode = el[key];

      return fiberNode && fiberNode.return && fiberNode.return.stateNode;
    }
  }
  return null;
};

Aber wie kann ich zu Requisiten kommen, wenn ich das bekommen habe?

Antworten

1 DanielWilliams Dec 01 2020 at 06:19

Aha, ich habe den Schlüssel gefunden. Sie müssen vorsichtig sein, um das richtige DOM-Element zu erhalten. Ich habe zu weit unten in der Hierarchie versucht. Nachdem ich die Erweiterung der React Dev-Tools verwendet hatte, um "das passende DOM-Element zu überprüfen", hatte ich das richtige Element und konnte seine Requisiten erhalten.