C'è un modo per conoscere la versione runtime di React nel browser?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
C'è un modo per conoscere la versione runtime di React nel browser?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Risposte:
React.version è quello che stai cercando.
Tuttavia, non è documentato (per quanto ne so) quindi potrebbe non essere una funzionalità stabile (ovvero, sebbene improbabile, potrebbe scomparire o cambiare nelle versioni future).
Esempio con Reactimportato come script
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>
Esempio con Reactimportato come modulo
import React from 'react';
console.log(React.version);
Ovviamente, se importi Reactcome modulo, non sarà nell'ambito globale. Il codice sopra è pensato per essere raggruppato con il resto della tua app, ad esempio usando webpack . Praticamente non funzionerà mai se utilizzato nella console di un browser (utilizza un input nudo).
Questo secondo approccio è quello consigliato. La maggior parte dei siti web lo utilizzerà. create-react-app fa questo (usa webpack dietro le quinte). In questo caso, Reactè incapsulato e generalmente non è accessibile affatto al di fuori del bundle (ad esempio nella console di un browser).
versionproprietà del modulo.
Uncaught ReferenceError: require is not definedeUncaught ReferenceError: React is not defined
Dalla riga di comando:
npm view react version
npm view react-native version
Apri Chrome Dev Tools o equivalente ed esegui require('React').versionnella console.
Funziona anche su siti Web come Facebook per scoprire quale versione stanno utilizzando.
ReferenceError: require is not defined
Con React Devtools installato puoi eseguirlo dalla console del browser:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.forEach(r => console.log(`${r.rendererPackageName}: ${r.version}`))
Che produce qualcosa come:
react-dom: 16.12.0
Non è certo che le variabili ECMAScript globali siano state esportate e html / css non indica necessariamente React. Quindi guarda nel file .js.
Metodo 1: guarda in ECMAScript:
Il numero di versione viene esportato da entrambi i moduli react-dom e react, ma questi nomi vengono spesso rimossi dal bundling e la versione viene nascosta all'interno di un contesto di esecuzione a cui non è possibile accedere. Un punto di interruzione intelligente può rivelare direttamente il valore, oppure puoi cercare l'ECMAScript:
Metodo 2: utilizza un punto di interruzione DOM:
Inspect Element
ElementsriquadroBreak On… - subtree modifications
SourcesriquadroCall Stacksotto-riquadrorendervoce, questa èReactDOM.renderrender, ad es. il codice che richiama renderreact-dommodulo esporta l'oggetto
version: "15.6.2", ad es. tutti i valori esportati dareact-domLa versione viene anche iniettata negli strumenti di sviluppo di React, ma per quanto ne so non viene visualizzata da nessuna parte.
Apri la console, quindi esegui window.React.version.
Questo ha funzionato per me in Safari e Chrome durante l'aggiornamento da 0.12.2 a 16.2.0.
Nel file index.js, sostituisci semplicemente il componente App con "React.version". Per esempio
ReactDOM.render(React.version, document.getElementById('root'));
L'ho verificato con React v16.8.1
Per un'app creata con create-react-app sono riuscito a vedere la versione:
L'app è stata distribuita senza mappa di origine.
Prima installa gli strumenti di sviluppo React se non sono installati, quindi utilizza il codice di esecuzione seguente nella console del browser:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.get(1).version