Existe uma maneira de saber a versão runtime do React no navegador?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Existe uma maneira de saber a versão runtime do React no navegador?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Respostas:
React.version é o que você está procurando.
No entanto, ele não está documentado (até onde eu sei), portanto pode não ser um recurso estável (ou seja, embora improvável, pode desaparecer ou mudar em versões futuras).
Exemplo com Reactimportado como um 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>
Exemplo com Reactimportado como um módulo
import React from 'react';
console.log(React.version);
Obviamente, se você importar Reactcomo módulo, não estará no escopo global. O código acima deve ser empacotado com o resto do seu aplicativo, por exemplo, usando o webpack . Praticamente nunca funcionará se for usado no console de um navegador (está usando entrada simples).
Esta segunda abordagem é a recomendada. A maioria dos sites vai usá-lo. create- react -app faz isso (ele está usando webpack nos bastidores ). Nesse caso, Reacté encapsulado e geralmente não pode ser acessado fora do pacote (por exemplo, no console de um navegador).
versionpropriedade do módulo.
Uncaught ReferenceError: require is not definedeUncaught ReferenceError: React is not defined
Na linha de comando:
npm view react version
npm view react-native version
Abra o Chrome Dev Tools ou equivalente e execute require('React').versionno console.
Isso funciona em sites como o Facebook também para descobrir qual versão eles estão usando.
ReferenceError: require is not defined
Com o React Devtools instalado, você pode executar isso no console do navegador:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.forEach(r => console.log(`${r.rendererPackageName}: ${r.version}`))
O que resulta em algo como:
react-dom: 16.12.0
Não é certo que quaisquer variáveis ECMAScript globais tenham sido exportadas e html / css não indica necessariamente React. Portanto, olhe no .js.
Método 1: Procure no ECMAScript:
O número da versão é exportado por ambos os módulos react-dom e react, mas esses nomes são frequentemente removidos pelo empacotamento e a versão é escondida dentro de um contexto de execução que não pode ser acessado. Um ponto de interrupção inteligente pode revelar o valor diretamente ou você pode pesquisar no ECMAScript:
Método 2: use um ponto de interrupção DOM:
Inspect Element
ElementspainelBreak On… - subtree modifications
SourcespainelCall Stacksubpainelrenderentrada, esta éReactDOM.renderrender, ou seja. o código que invoca renderreact-dommódulo exporta objeto
version: "15.6.2", ou seja. todos os valores exportados porreact-domA versão também é injetada nas ferramentas de desenvolvimento do React, mas até onde eu sei não é exibida em lugar nenhum.
Abra o console e execute window.React.version.
Isso funcionou para mim no Safari e no Chrome durante a atualização de 0.12.2 para 16.2.0.
No arquivo index.js, simplesmente substitua o componente App por "React.version". Por exemplo
ReactDOM.render(React.version, document.getElementById('root'));
Eu verifiquei isso com React v16.8.1
Para um aplicativo criado com create-react-app , consegui ver a versão:
O aplicativo foi implantado sem mapa de origem.
Primeiro instale as ferramentas de desenvolvimento React se não estiverem instaladas e, em seguida, use o código de execução abaixo no console do navegador:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.get(1).version