ฉันค่อนข้างใหม่ที่จะตอบสนอง ฉันเห็นว่าเราต้องนำเข้าสองสิ่งเพื่อเริ่มต้นReact
และReactDOM
ทุกคนสามารถอธิบายความแตกต่างได้ ฉันอ่านเอกสาร Reactแต่มันไม่ได้พูดอะไร
ฉันค่อนข้างใหม่ที่จะตอบสนอง ฉันเห็นว่าเราต้องนำเข้าสองสิ่งเพื่อเริ่มต้นReact
และReactDOM
ทุกคนสามารถอธิบายความแตกต่างได้ ฉันอ่านเอกสาร Reactแต่มันไม่ได้พูดอะไร
คำตอบ:
React และ ReactDOM เพิ่งถูกแยกเป็นสองไลบรารีที่แตกต่างกัน ก่อนหน้า v0.14 ฟังก์ชัน ReactDOM ทั้งหมดเป็นส่วนหนึ่งของ React นี่อาจเป็นสาเหตุของความสับสนเนื่องจากเอกสารที่มีวันที่เล็กน้อยจะไม่กล่าวถึงความแตกต่างของ React / ReactDOM
ตามที่มีความหมายชื่อ ReactDOM เป็นกาวระหว่าง React และ DOM บ่อยครั้งที่คุณจะใช้มันสำหรับสิ่งเดียวที่หนึ่ง: ReactDOM.render()
การติดตั้งด้วย อีกคุณสมบัติที่มีประโยชน์ของ ReactDOM คือReactDOM.findDOMNode()
คุณสามารถใช้เพื่อเข้าถึงโดยตรงไปยังองค์ประกอบ DOM (บางสิ่งที่คุณควรใช้อย่าง จำกัด ในแอป React แต่อาจจำเป็น) หากแอปของคุณคือ "isomorphic" คุณจะต้องใช้ReactDOM.renderToString()
ในโค้ดแบ็คเอนด์ด้วย
สำหรับทุกอย่างอื่นมีปฏิกิริยา คุณใช้ React เพื่อกำหนดและสร้างองค์ประกอบสำหรับ lifecycle hooks เป็นต้นเช่นความกล้าของแอปพลิเคชัน React
เหตุผลที่ React และ ReactDOM ถูกแบ่งออกเป็นสองไลบรารีเนื่องจากการมาของ React Native React มีฟังก์ชั่นการใช้งานในเว็บและแอพมือถือ ฟังก์ชั่น ReactDOM ใช้ในเว็บแอพเท่านั้น [ อัพเดต:จากการวิจัยเพิ่มเติมมันชัดเจนว่าไม่รู้ว่า React Native กำลังแสดงอยู่ การมีแพคเกจ React ทั่วทั้งเว็บและมือถือดูเหมือนจะมีความทะเยอทะยานมากกว่าความเป็นจริงในขณะนี้ React Native อยู่ในขณะนี้แพ็คเกจที่แตกต่างอย่างสิ้นเชิง]
ดูโพสต์บล็อกที่ประกาศการเปิดตัว v0.14: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html
จากปฏิกิริยา v0.14 รุ่นเบต้าประกาศ
ในขณะที่เรามองไปที่แพคเกจเช่น
react-native
,react-art
,react-canvas
และreact-three
ก็เป็นที่ชัดเจนว่าความงามและสาระสำคัญของการตอบสนองมีอะไรจะทำอย่างไรกับเบราว์เซอร์หรือ DOMเพื่อให้ชัดเจนยิ่งขึ้นและเพื่อให้ง่ายต่อการสร้างสภาพแวดล้อมที่ React สามารถแสดงผลได้เราจึงแบ่งแพ็คเกจปฏิกิริยาหลักออกเป็นสองส่วนคือ react และ react-dom
โดยพื้นฐานแล้วความคิดของ React ไม่มีส่วนเกี่ยวข้องกับเบราว์เซอร์ แต่เป็นเพียงหนึ่งในหลาย ๆ เป้าหมายในการแสดงโครงสร้างของส่วนประกอบ แพ็คเกจ ReactDOM อนุญาตให้นักพัฒนาลบโค้ดที่ไม่จำเป็นออกจากแพ็คเกจ ReactDOM และย้ายไปไว้ในที่เก็บที่เหมาะสมกว่า
react
แพคเกจประกอบด้วยReact.createElement
,React.createClass
และReact.Component
,React.PropTypes
,React.Children
และผู้ช่วยเหลืออื่น ๆ ที่เกี่ยวข้องกับองค์ประกอบและการเรียนส่วนประกอบ เราคิดว่าสิ่งเหล่านี้เป็นผู้ช่วยisomorphic หรือสากลที่คุณต้องการสร้างส่วนประกอบ
react-dom
แพคเกจประกอบด้วยReactDOM.render
,ReactDOM.unmountComponentAtNode
และReactDOM.findDOMNode
และreact-dom/server
เรามีการสนับสนุนการแสดงผลด้านเซิร์ฟเวอร์ด้วยและReactDOMServer.renderToString
ReactDOMServer.renderToStaticMarkup
ทั้งสองย่อหน้าอธิบายที่วิธีการ API หลักจากv0.13
จบลง
ก่อนv0.14พวกเขาเป็นส่วนหนึ่งของไฟล์ ReactJs หลัก แต่ในบางกรณีเราอาจไม่จำเป็นต้องใช้ทั้งคู่แยกจากกันและเริ่มจากเวอร์ชัน 0.14 ด้วยวิธีนี้หากเราต้องการเพียงหนึ่งไฟล์แอปของเราจะเล็กลงเนื่องจาก ใช้เพียงหนึ่งในนั้น:
var React = require('react'); /* importing react */
var ReactDOM = require('react-dom'); /* importing react-dom */
var MyComponent = React.createClass({
render: function() {
return <div>Hello World</div>;
}
});
ReactDOM.render(<MyComponent />, node);
ตอบสนองต่อแพคเกจประกอบด้วย: React.createElement, React.createClass, React.Component, React.PropTypes, React.Children
แพ็คเกจ React-domประกอบด้วย: ReactDOM.render, ReactDOM.unmountComponentAtNode, ReactDOM.findDOMNode และ react-dom / เซิร์ฟเวอร์ที่รวมถึง: ReactDOMServer.renderToStaticMarkup
โมดูล ReactDOM เปิดเผยวิธีการเฉพาะ DOM ในขณะที่ React มีเครื่องมือหลักที่ตั้งใจจะแบ่งปันโดย React บนแพลตฟอร์มต่างๆ (เช่น React Native)
ดูเหมือนว่าพวกเขาได้แยก React เข้าreact
และreact-dom
แพ็คเกจดังนั้นคุณไม่จำเป็นต้องใช้ส่วนที่เกี่ยวข้องกับ DOM สำหรับโครงการที่คุณต้องการใช้ในกรณีที่ไม่ใช่ DOM เฉพาะเช่นในที่นี่https: // github.com/Flipboard/react-canvas
ที่นำเข้า
var React = require('react');
var ReactCanvas = require('react-canvas');
อย่างที่เห็น. react-dom
ไม่มี
เพื่อให้รัดกุมยิ่งขึ้นการตอบสนองมีไว้สำหรับส่วนประกอบและ react-dom ใช้สำหรับการสร้างการแสดงผลส่วนประกอบใน DOM 'react-dom' ทำหน้าที่เป็นกาวระหว่างส่วนประกอบและ DOM คุณจะใช้วิธีการแสดงผล () ของ react-dom เพื่อสร้างองค์ประกอบใน DOM และนั่นคือทั้งหมดที่คุณต้องรู้เมื่อคุณเริ่มด้วย
การreact package
ถือครองreact source
ส่วนประกอบ, สถานะ, อุปกรณ์ประกอบฉากและรหัสทั้งหมดที่ตอบสนอง
แพคเกจเป็นชื่อที่มีความหมายคือreact-dom
glue between React and the DOM
บ่อยครั้งคุณจะใช้เพื่อสิ่งเดียวเท่านั้น:mounting your application to the index.html file with ReactDOM.render()
เท่านั้น .
ทำไมต้องแยกพวกเขา
reason
ตอบสนองและ ReactDOM React Native (A react platform for mobile development)
ถูกแบ่งออกเป็นสองห้องสมุดเนื่องจากการมาถึงของ
ReactDOM
- facebook.github.io/react/blog/2016/11/16/react-v15.4.0.html