มีวิธีการทราบเวอร์ชันรันไทม์ของ 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 ไม่จำเป็นต้องแสดงถึงปฏิกิริยา ดังนั้นดูใน. js
วิธีที่ 1: ดูใน ECMAScript:
หมายเลขเวอร์ชันถูกส่งออกโดยทั้งสองโมดูลreact-domและตอบสนองแต่ชื่อเหล่านั้นมักจะถูกลบออกโดยการรวมกลุ่มและเวอร์ชันที่ซ่อนอยู่ในบริบทการดำเนินการที่ไม่สามารถเข้าถึงได้ จุดพักที่ชาญฉลาดอาจเปิดเผยค่าโดยตรงหรือคุณสามารถค้นหา 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 dev แต่เท่าที่ฉันรู้ว่าไม่แสดงที่ใดก็ได้
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-react-appฉันจัดการเพื่อดูเวอร์ชัน:
แอปถูกปรับใช้โดยไม่มีแผนที่ต้นทาง
ในโปรเจ็กต์ที่มีอยู่วิธีง่ายๆในการดูเวอร์ชัน React คือไปที่render
เมธอดของส่วนประกอบใด ๆ และเพิ่ม:
<p>{React.version}</p>
สิ่งนี้จะถือว่าคุณนำเข้า React ดังนี้: import React from 'react'
ขั้นแรกให้ติดตั้งเครื่องมือ React dev หากไม่ได้ติดตั้งจากนั้นใช้รันโค้ดด้านล่างในคอนโซลเบราว์เซอร์:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.get(1).version
จากบรรทัดคำสั่งเพื่อดูเวอร์ชันการตอบสนองเวอร์ชันการตอบสนองของมุมมอง npm