Есть ли способ узнать версию React во время выполнения в браузере?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Есть ли способ узнать версию React во время выполнения в браузере?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Ответы:
React.version
это то, что вы ищете.
Однако это недокументировано (насколько мне известно), поэтому это может быть нестабильная функция (то есть, хотя и маловероятно, она может исчезнуть или измениться в будущих выпусках).
Пример с React
импортированным как скрипт
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>
Пример с React
импортированным модулем
import React from 'react';
console.log(React.version);
Очевидно, что если вы импортируете React
как модуль, он не будет в глобальной области. Приведенный выше код предназначен для объединения с остальной частью вашего приложения, например, с использованием webpack . Он практически никогда не будет работать, если используется в консоли браузера (он использует простой ввод).
Этот второй подход является рекомендуемым. Большинство веб-сайтов будут использовать его. create-react-app делает это ( за сценой использует webpack ). В этом случае React
он инкапсулирован и, как правило, вообще недоступен вне пакета (например, в консоли браузера).
version
свойство модуля.
Uncaught ReferenceError: require is not defined
иUncaught ReferenceError: React is not defined
Из командной строки:
npm view react version
npm view react-native version
Откройте Chrome Dev Tools или аналогичный и запустите require('React').version
в консоли.
Это работает и на таких сайтах, как Facebook, чтобы узнать, какую версию они используют.
ReferenceError: require is not defined
Установив React Devtools, вы можете запустить это из консоли браузера:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.forEach(r => console.log(`${r.rendererPackageName}: ${r.version}`))
Что выводит что-то вроде:
react-dom: 16.12.0
Не факт, что какие-либо глобальные переменные ECMAScript были экспортированы, и html / css не обязательно указывает на React. Так что загляните в .js.
Метод 1: посмотрите в ECMAScript:
Номер версии экспортируется обоими модулями react-dom и react, но эти имена часто удаляются при объединении, а версия скрывается внутри контекста выполнения, к которому нет доступа. Умная точка останова может напрямую показать значение, или вы можете выполнить поиск в ECMAScript:
Метод 2: используйте точку останова DOM:
Inspect Element
Elements
панельBreak On… - subtree modifications
Sources
панельCall Stack
подпанельrender
запись, этоReactDOM.render
render
, т.е. код, который вызывает рендерингreact-dom
объект экспорта модуля
version: "15.6.2"
, т.е. все значения экспортированыreact-dom
Версия также вводится в инструменты разработки React, но, насколько я знаю, нигде не отображается.
Откройте консоль, затем запустите window.React.version
.
У меня это сработало в Safari и Chrome при обновлении с 0.12.2 до 16.2.0.
В файле index.js просто замените компонент приложения на «React.version». Например
ReactDOM.render(React.version, document.getElementById('root'));
Я проверил это с помощью React v16.8.1
Для приложения, созданного с помощью create-response-app, мне удалось увидеть версию:
Приложение было развернуто без карты источников.
Сначала установите инструменты разработчика React, если они не установлены, а затем используйте приведенный ниже код в консоли браузера:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.get(1).version
Из командной строки для просмотра версии реакции, npm просмотра версии реакции