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 React
diimpor 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 React
diimpor sebagai modul
import React from 'react';
console.log(React.version);
Jelas, jika Anda mengimpor React
sebagai 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, React
dienkapsulasi dan umumnya tidak dapat diakses sama sekali di luar bundel (misalnya di konsol browser).
version
properti modul.
Uncaught ReferenceError: require is not defined
danUncaught 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').version
di 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
Elements
panelBreak On… - subtree modifications
Sources
panelCall Stack
sub-panelrender
entri, iniReactDOM.render
render
, yaitu. kode yang memanggil renderreact-dom
ekspor modul obyek
version: "15.6.2"
, yaitu. semua nilai yang diekspor olehreact-dom
Versi 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