¿Hay alguna forma de conocer la versión en tiempo de ejecución de React en el navegador?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
¿Hay alguna forma de conocer la versión en tiempo de ejecución de React en el navegador?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Respuestas:
React.version
es lo que buscas.
Sin embargo, no está documentado (que yo sepa) por lo que puede que no sea una característica estable (es decir, aunque es poco probable, puede desaparecer o cambiar en versiones futuras).
Ejemplo con React
importado como 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>
Ejemplo con React
importado como módulo
import React from 'react';
console.log(React.version);
Obviamente, si importa React
como módulo, no estará en el ámbito global. El código anterior está destinado a integrarse con el resto de su aplicación, por ejemplo, mediante webpack . Prácticamente nunca funcionará si se usa en la consola de un navegador (está usando entrada simple).
Este segundo enfoque es el recomendado. La mayoría de los sitios web lo usarán. create-react-app hace esto (está usando webpack detrás de escena). En este caso, React
está encapsulado y generalmente no es accesible fuera del paquete (por ejemplo, en la consola de un navegador).
version
propiedad del módulo.
Uncaught ReferenceError: require is not defined
yUncaught ReferenceError: React is not defined
Desde la línea de comando:
npm view react version
npm view react-native version
Abra Chrome Dev Tools o equivalente y ejecútelo require('React').version
en la consola.
Eso también funciona en sitios web como Facebook para averiguar qué versión están usando.
ReferenceError: require is not defined
Con React Devtools instalado, puede ejecutar esto desde la consola del navegador:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.forEach(r => console.log(`${r.rendererPackageName}: ${r.version}`))
Lo que genera algo como:
react-dom: 16.12.0
No es seguro que se hayan exportado variables globales de ECMAScript y html / css no necesariamente indica React. Así que busque en el .js.
Método 1: busque en ECMAScript:
Ambos módulos, react-dom y react, exportan el número de versión, pero esos nombres a menudo se eliminan mediante la agrupación y la versión se oculta dentro de un contexto de ejecución al que no se puede acceder. Un punto de interrupción inteligente puede revelar el valor directamente, o puede buscar en ECMAScript:
Método 2: use un punto de interrupción DOM:
Inspect Element
Elements
panelBreak On… - subtree modifications
Sources
panelCall Stack
subpanelrender
entrada, esto esReactDOM.render
render
, es decir. el código que invoca renderreact-dom
módulo exporta el objeto
version: "15.6.2"
, es decir. todos los valores exportados porreact-dom
La versión también se inyecta en las herramientas de desarrollo de React, pero hasta donde yo sé no se muestra en ninguna parte.
Abra la consola, luego ejecute window.React.version
.
Esto funcionó para mí en Safari y Chrome mientras actualizaba de 0.12.2 a 16.2.0.
En el archivo index.js, simplemente reemplace el componente de la aplicación con "React.version". P.ej
ReactDOM.render(React.version, document.getElementById('root'));
He comprobado esto con React v16.8.1
Para una aplicación creada con create-react-app logré ver la versión:
La aplicación se implementó sin mapa de origen.
Primero instale las herramientas de desarrollo de React si no están instaladas y luego use el código de ejecución a continuación en la consola del navegador:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.get(1).version