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 React
importato 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 React
importato come modulo
import React from 'react';
console.log(React.version);
Ovviamente, se importi React
come 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).
version
proprietà del modulo.
Uncaught ReferenceError: require is not defined
eUncaught 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').version
nella 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
Elements
riquadroBreak On… - subtree modifications
Sources
riquadroCall Stack
sotto-riquadrorender
voce, questa èReactDOM.render
render
, ad es. il codice che richiama renderreact-dom
modulo esporta l'oggetto
version: "15.6.2"
, ad es. tutti i valori esportati dareact-dom
La 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