Apakah ada cara untuk mengetahui versi runtime dari React di browser?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Apakah ada cara untuk mengetahui versi runtime dari React di browser?
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
Jawaban:
React.version adalah apa yang Anda cari.
Ini tidak berdokumen meskipun (sejauh yang saya tahu) jadi ini mungkin bukan fitur yang stabil (yaitu meskipun tidak mungkin, itu mungkin hilang atau berubah dalam rilis mendatang).
Contoh dengan Reactdiimpor sebagai skrip
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>
Contoh dengan Reactdiimpor sebagai modul
import React from 'react';
console.log(React.version);
Jelas, jika Anda mengimpor Reactsebagai modul, itu tidak akan berada dalam cakupan global. Kode di atas dimaksudkan untuk digabungkan dengan aplikasi Anda lainnya, misalnya menggunakan webpack . Ini hampir tidak akan pernah berfungsi jika digunakan di konsol browser (ini menggunakan input kosong).
Pendekatan kedua ini adalah yang direkomendasikan. Sebagian besar situs web akan menggunakannya. create-react-app melakukan ini (ini menggunakan webpack di belakang layar). Dalam kasus ini, Reactdienkapsulasi dan umumnya tidak dapat diakses sama sekali di luar bundel (misalnya di konsol browser).
versionproperti modul.
Uncaught ReferenceError: require is not defineddanUncaught ReferenceError: React is not defined
Dari baris perintah:
npm view react version
npm view react-native version
Buka Chrome Dev Tools atau yang setara dan jalankan require('React').versiondi konsol.
Itu berfungsi di situs web seperti Facebook juga untuk mengetahui versi apa yang mereka gunakan.
ReferenceError: require is not defined
Dengan menginstal React Devtools, Anda dapat menjalankan ini dari konsol browser:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.forEach(r => console.log(`${r.rendererPackageName}: ${r.version}`))
Yang menghasilkan sesuatu seperti:
react-dom: 16.12.0
Tidak ada kepastian bahwa variabel ECMAScript global telah diekspor dan html / css tidak selalu menunjukkan React. Jadi lihat di .js.
Metode 1: Lihat di ECMAScript:
Nomor versi diekspor oleh kedua modul react-dom dan react tetapi nama-nama itu sering dihapus dengan bundling dan versi disembunyikan di dalam konteks eksekusi yang tidak dapat diakses. Sebuah break point pintar dapat mengungkapkan nilai secara langsung, atau Anda dapat mencari ECMAScript:
Metode 2: Gunakan breakpoint DOM:
Inspect Element
ElementspanelBreak On… - subtree modifications
SourcespanelCall Stacksub-panelrenderentri, iniReactDOM.renderrender, yaitu. kode yang memanggil renderreact-domekspor modul obyek
version: "15.6.2", yaitu. semua nilai yang diekspor olehreact-domVersi ini juga disuntikkan ke alat dev React, tetapi sejauh yang saya tahu tidak ditampilkan di mana pun.
Buka konsol, lalu jalankan window.React.version.
Ini berfungsi untuk saya di Safari dan Chrome saat meningkatkan dari 0.12.2 ke 16.2.0.
Di file index.js, cukup ganti komponen App dengan "React.version". Misalnya
ReactDOM.render(React.version, document.getElementById('root'));
Saya telah memeriksa ini dengan React v16.8.1
Untuk aplikasi yang dibuat dengan create-react-app, saya berhasil melihat versinya:
Aplikasi diterapkan tanpa peta sumber.
Pertama, Instal alat dev React jika tidak diinstal, lalu gunakan kode di bawah ini di konsol browser:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.get(1).version