Existe-t-il un moyen de connaître la version d'exécution de React dans le navigateur?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Existe-t-il un moyen de connaître la version d'exécution de React dans le navigateur?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Réponses:
React.version
est ce que vous recherchez.
Cependant, il n'est pas documenté (pour autant que je sache) donc ce n'est peut-être pas une fonctionnalité stable (c'est-à-dire bien que peu probable, il peut disparaître ou changer dans les versions futures).
Exemple avec React
importé sous forme de 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>
Exemple avec React
importé en tant que module
import React from 'react';
console.log(React.version);
Évidemment, si vous importez en React
tant que module, il ne sera pas dans la portée globale. Le code ci-dessus est destiné à être fourni avec le reste de votre application, par exemple en utilisant webpack . Il ne fonctionnera pratiquement jamais s'il est utilisé dans la console d'un navigateur (il utilise une entrée nue).
Cette seconde approche est celle recommandée. La plupart des sites Web l'utiliseront. create-react-app fait cela (il utilise webpack dans les coulisses). Dans ce cas, React
est encapsulé et n'est généralement pas accessible du tout en dehors du bundle (par exemple dans la console d'un navigateur).
version
propriété du module.
Uncaught ReferenceError: require is not defined
etUncaught ReferenceError: React is not defined
Depuis la ligne de commande:
npm view react version
npm view react-native version
Ouvrez Chrome Dev Tools ou équivalent et exécutez-le require('React').version
dans la console.
Cela fonctionne également sur des sites Web comme Facebook pour savoir quelle version ils utilisent.
ReferenceError: require is not defined
Une fois React Devtools installé, vous pouvez l'exécuter à partir de la console du navigateur:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.forEach(r => console.log(`${r.rendererPackageName}: ${r.version}`))
Qui produit quelque chose comme:
react-dom: 16.12.0
Il n'est pas certain que des variables globales ECMAScript aient été exportées et html / css n'indique pas nécessairement React. Alors regardez dans le .js.
Méthode 1: Rechercher dans ECMAScript:
Le numéro de version est exporté par les deux modules react-dom et react mais ces noms sont souvent supprimés par regroupement et la version est masquée dans un contexte d'exécution inaccessible. Un point d'arrêt intelligent peut révéler la valeur directement, ou vous pouvez rechercher l'ECMAScript:
Méthode 2: utilisez un point d'arrêt DOM:
Inspect Element
Elements
voletBreak On… - subtree modifications
Sources
voletCall Stack
sous-voletrender
entrée, c'estReactDOM.render
render
- dessous , ie. le code qui appelle renderreact-dom
module exporte l'objet
version: "15.6.2"
, ie. toutes les valeurs exportées parreact-dom
La version est également injectée dans les outils de développement React, mais pour autant que je sache, elle ne s'affiche nulle part.
Ouvrez la console, puis exécutez window.React.version
.
Cela a fonctionné pour moi dans Safari et Chrome lors de la mise à niveau de 0.12.2 à 16.2.0.
Dans le fichier index.js, remplacez simplement le composant App par "React.version". Par exemple
ReactDOM.render(React.version, document.getElementById('root'));
J'ai vérifié cela avec React v16.8.1
Pour une application créée avec create-react-app, j'ai réussi à voir la version:
L'application a été déployée sans carte source.
Installez d'abord les outils de développement React s'ils ne sont pas installés, puis utilisez le code ci-dessous dans la console du navigateur:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.get(1).version