Czy jest sposób, aby poznać wersję uruchomieniową Reacta w przeglądarce?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Czy jest sposób, aby poznać wersję uruchomieniową Reacta w przeglądarce?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Odpowiedzi:
React.version jest tym, czego szukasz.
Jest to jednak nieudokumentowane (o ile wiem), więc może nie być stabilną funkcją (tj. Choć mało prawdopodobne, może zniknąć lub ulec zmianie w przyszłych wydaniach).
Przykład z Reactimportem jako skrypt
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>
Przykład z Reactimportem jako moduł
import React from 'react';
console.log(React.version);
Oczywiście, jeśli importujesz Reactjako moduł, nie będzie on objęty zakresem globalnym. Powyższy kod jest przeznaczony do dołączenia do reszty aplikacji, np. Za pomocą webpacka . Praktycznie nigdy nie zadziała, jeśli zostanie użyty w konsoli przeglądarki (używa samego wejścia).
To drugie podejście jest zalecane. Będzie go używać większość witryn internetowych. create-react-app robi to (używa webpacka za kulisami ). W tym przypadku Reactjest hermetyzowany i generalnie nie jest w ogóle dostępny poza pakietem (np. W konsoli przeglądarki).
versionwłaściwość modułu.
Uncaught ReferenceError: require is not definediUncaught ReferenceError: React is not defined
Z wiersza poleceń:
npm view react version
npm view react-native version
Otwórz Chrome Dev Tools lub odpowiednik i uruchom require('React').versionw konsoli.
Działa to również w witrynach takich jak Facebook, aby dowiedzieć się, jakiej wersji używają.
ReferenceError: require is not defined
Po zainstalowaniu React Devtools możesz uruchomić to z konsoli przeglądarki:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.forEach(r => console.log(`${r.rendererPackageName}: ${r.version}`))
Który wyświetla coś takiego:
react-dom: 16.12.0
Nie ma pewności, czy jakiekolwiek globalne zmienne ECMAScript zostały wyeksportowane, a html / css niekoniecznie oznacza React. Więc spójrz na .js.
Metoda 1: Zajrzyj do ECMAScript:
Numer wersji jest eksportowany przez oba moduły reaguj-dom i reaguj, ale te nazwy są często usuwane przez pakowanie, a wersja jest ukryta w kontekście wykonania, do którego nie można uzyskać dostępu. Sprytny punkt przerwania może bezpośrednio ujawnić wartość lub możesz przeszukać ECMAScript:
Metoda 2: Użyj punktu przerwania DOM:
Inspect Element
ElementspanelBreak On… - subtree modifications
SourcesokienkoCall Stackokienku podrzędnymrenderwpisReactDOM.renderrender, tj. kod, który wywołuje renderreact-domprzedmiot eksportu modułu
version: "15.6.2"m.in. wszystkie wartości wyeksportowane przezreact-domWersja jest również wstrzykiwana do narzędzi deweloperskich React, ale o ile wiem, nigdzie nie jest wyświetlana.
Otwórz konsolę, a następnie uruchom window.React.version.
To działało dla mnie w Safari i Chrome podczas aktualizacji z 0.12.2 do 16.2.0.
W pliku index.js po prostu zamień komponent aplikacji na „React.version”. Na przykład
ReactDOM.render(React.version, document.getElementById('root'));
Sprawdziłem to w React v16.8.1
W przypadku aplikacji utworzonej za pomocą aplikacji create-react-app udało mi się zobaczyć wersję:
Aplikacja została wdrożona bez mapy źródłowej.
Najpierw zainstaluj narzędzia deweloperskie React, jeśli nie są zainstalowane, a następnie użyj poniższego kodu w konsoli przeglądarki:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.get(1).version