Есть ли способ узнать версию выполнения React в браузере?
Как можно сказать версию React, запущенную во время выполнения в браузере?
Ответ 1
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>
Ответ 2
Откройте Chrome Dev Tools или аналогичный и запустите require('React').version
в консоли.
Это работает на таких сайтах, как Facebook, чтобы узнать, какую версию они используют.
Ответ 3
Нет уверенности в том, что какие-либо глобальные переменные ECMAScript были экспортированы, и html/css не обязательно указывает React. Так что смотрите в .js.
Способ 1: посмотрите в ECMAScript:
Номер версии экспортируется обоими модулями реагировать и реагировать, но эти имена часто удаляются связыванием, а версия скрывается в контексте выполнения, к которому нет доступа. Умная точка останова может раскрыть значение напрямую, или вы можете искать в ECMAScript:
- Загрузите веб-страницу (вы можете попробовать https://www.instagram.com их общее количество Coolaiders)
- Откройте вкладку "Инструменты разработчика Chrome" на вкладке "Источники" (control + shift + я или command + shift + i)
- Инструменты разработчика открываются на вкладке Источники
- В правом верхнем углу строки меню нажмите вертикальный многоточие и выберите поиск по всем файлам.
- В поле поиска внизу слева введите FIRED заглавными буквами, снимите флажок Ignore case, введите Enter
- Одно или несколько совпадений появятся ниже. Версия является экспортом, очень близким к строке поиска, похожей на версию: "16.0.0"
- Если номер версии не виден сразу: дважды щелкните строку, которая начинается с номера строки
- ECMAScript появляется в средней панели
- Если номер версии не виден сразу: нажмите на две скобки в левом нижнем углу панели ECMAScript {}
- ECMAScript переформатирован и легче для чтения
- Если номер версии не виден сразу: прокрутите несколько строк вверх и вниз, чтобы найти его, или попробуйте другой ключ поиска
- Если код не минифицирован, ищите ReactVersion. Там должно быть 2 совпадения с одинаковым значением.
- Если код минимизирован, ищите либо SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED или реагировать на дом
- Или поиск самой вероятной строки версии: "15. или " 16. или даже "0,15
Метод 2: Используйте точку останова DOM:
- Загрузить страницу, отображаемую React
- Щелкните правой кнопкой мыши элемент React (что угодно, например, поле ввода или поле) и выберите
Inspect Element
- Инструменты разработчика Chrome отображают панель "
Elements
- Инструменты разработчика Chrome отображают панель "
- Находясь как можно выше в дереве от выбранного элемента, но не выше корневого элемента React (часто это div непосредственно внутри тела с id root: <div id = "root">), щелкните правой кнопкой мыши элемент и выберите
Break On… - subtree modifications
- Примечание. Можно сравнить содержимое вкладки "Элементы" (текущее состояние DOM) с ответом для того же ресурса на вкладке "Сети". Это может показать Реагирует корневой элемент
- Перезагрузите страницу, нажав Обновить слева от адресной строки
- Инструменты разработчика Chrome останавливаются на точке останова и отображают панель "
Sources
- Инструменты разработчика Chrome останавливаются на точке останова и отображают панель "
- В самой правой панели изучите
Call Stack
- Как можно дальше вниз по стеку вызовов должна быть запись
render
, этоReactDOM.render
- Нажмите на строку ниже
render
, т.е. код, который вызывает визуализацию - На средней панели теперь отображается ECMAScript с выделенным выражением .render
- Наведите курсор мыши на объект, используемый для вызова рендера, is. модуль
react-dom
объект экспорта- если строка кода идет: Object (u.render) (..., наведите курсор мыши на и-
- Отображается окно всплывающей подсказки с
version: "15.6.2"
, т.е. все значения, экспортируемыеreact-dom
Версия также внедряется в инструменты разработки React, но, насколько я знаю, нигде не отображается.
Ответ 4
Откройте консоль, затем запустите window.React.version
.
Это работало для меня в Safari и Chrome при обновлении с 0.12.2 до 16.2.0.
Ответ 5
В файле index.js просто замените компонент приложения на "React.version". Например
ReactDOM.render(React.version, document.getElementById('root'));
Я проверил это с React v16.8.1
Ответ 6
Для приложения, созданного с помощью create-реагировать-приложение, мне удалось увидеть версию:
- Открыть Chrome Dev Tools/Firefox Dev Tools,
- Найдите и откройте файл main.XXXXXXXX.js, где XXXXXXXX - хеш сборок/может отличаться,
- Необязательно: отформатируйте источник, нажав {}, чтобы отобразить отформатированный источник,
- Искать как текст внутри источника для Reaction-DOM,
- в Хроме было найдено: "реаги-дом": "^ 16.4.0",
- в Firefox было найдено: 'response-dom': '^ 16.4.0'
Приложение было развернуто без исходной карты.
Ответ 7
В существующем проекте простой способ увидеть версию React - перейти к методу render
любого компонента и добавить:
<p>{React.version}</p>
Предполагается, что вы импортируете React следующим образом: import React from 'react'