Gibt es eine Möglichkeit, die Laufzeitversion von React im Browser zu ermitteln?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Gibt es eine Möglichkeit, die Laufzeitversion von React im Browser zu ermitteln?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Antworten:
React.version ist was Sie suchen.
Es ist jedoch nicht dokumentiert (soweit ich weiß), so dass es möglicherweise keine stabile Funktion ist (dh obwohl es unwahrscheinlich ist, kann es in zukünftigen Versionen verschwinden oder sich ändern).
Beispiel mit Reactals Skript importiert
const REACT_VERSION = React.version;
ReactDOM.render(
<div>React version: {REACT_VERSION}</div>,
document.getElementById('root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
Beispiel mit Reactals Modul importiert
import React from 'react';
console.log(React.version);
Wenn Sie Reactals Modul importieren , liegt es natürlich nicht im globalen Bereich. Der obige Code soll mit dem Rest Ihrer App gebündelt werden, z . B. mithilfe von Webpack . Es wird praktisch nie funktionieren, wenn es in der Konsole eines Browsers verwendet wird (es verwendet bloße Eingabe).
Dieser zweite Ansatz wird empfohlen. Die meisten Websites werden es verwenden. create-react-app macht das (es benutzt Webpack hinter den Kulissen ). In diesem Fall Reactist es gekapselt und außerhalb des Bundles im Allgemeinen überhaupt nicht zugänglich (z. B. in der Konsole eines Browsers).
versionEigenschaft des Moduls abrufen.
Uncaught ReferenceError: require is not definedundUncaught ReferenceError: React is not defined
Über die Befehlszeile:
npm view react version
npm view react-native version
Öffnen Sie Chrome Dev Tools oder ein gleichwertiges Tool und führen Sie es require('React').versionin der Konsole aus.
Das funktioniert auch auf Websites wie Facebook, um herauszufinden, welche Version sie verwenden.
ReferenceError: require is not defined
Wenn die React Devtools installiert sind, können Sie dies über die Browserkonsole ausführen:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.forEach(r => console.log(`${r.rendererPackageName}: ${r.version}`))
Welche Ausgaben so etwas wie:
react-dom: 16.12.0
Es ist nicht sicher, ob globale ECMAScript-Variablen exportiert wurden, und HTML / CSS gibt nicht unbedingt React an. Schauen Sie also in die .js.
Methode 1: In ECMAScript suchen:
Die Versionsnummer wird von beiden Modulen " React-Dom" und " React" exportiert. Diese Namen werden jedoch häufig durch Bündelung entfernt und die Version in einem Ausführungskontext versteckt, auf den nicht zugegriffen werden kann. Ein cleverer Haltepunkt kann den Wert direkt anzeigen oder Sie können das ECMAScript durchsuchen:
Methode 2: Verwenden Sie einen DOM-Haltepunkt:
Inspect Element
ElementsScheibeBreak On… - subtree modifications
SourcesScheibeCall StackUnterbereichrenderEintrag geben, das istReactDOM.renderrender, dh. Der Code, der das Rendern aufruftreact-dom Modul exportiert das Objekt
version: "15.6.2": Alle Werte exportiert vonreact-domDie Version wird auch in die React-Entwicklungstools eingefügt, aber meines Wissens nirgendwo angezeigt.
Öffnen Sie die Konsole und führen Sie sie aus window.React.version.
Dies funktionierte für mich in Safari und Chrome beim Upgrade von 0.12.2 auf 16.2.0.
Ersetzen Sie in der Datei index.js einfach die App- Komponente durch "React.version". Z.B
ReactDOM.render(React.version, document.getElementById('root'));
Ich habe dies mit React v16.8.1 überprüft
Für eine mit create-react- app erstellte App konnte ich die Version sehen:
Die App wurde ohne Quellkarte bereitgestellt.
In einem vorhandenen Projekt können Sie die React-Version auf einfache Weise anzeigen, indem Sie zu einer renderMethode einer beliebigen Komponente wechseln und Folgendes hinzufügen:
<p>{React.version}</p>
Dies setzt voraus, dass Sie React wie folgt importieren: import React from 'react'
Installieren Sie zuerst die React dev-Tools, falls diese nicht installiert sind, und verwenden Sie dann den folgenden Code in der Browserkonsole:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.get(1).version