반응 대 ReactDOM?


답변:


251

React와 ReactDOM은 최근에 두 개의 다른 라이브러리로만 분리되었습니다. v0.14 이전에는 모든 ReactDOM 기능이 React의 일부였습니다. 약간 날짜가 지난 문서에는 React / ReactDOM 구별이 언급되어 있지 않으므로 혼란의 원인이 될 수 있습니다.

이름에서 알 수 있듯이 ReactDOM은 React와 DOM 사이의 접착제입니다. 종종 다음과 같은 하나의 마운트에만 사용합니다 ReactDOM.render(). ReactDOM의 또 다른 유용한 기능은 ReactDOM.findDOMNode()DOM 요소에 직접 액세스하는 데 사용할 수 있습니다. (React 앱에서는 드물게 사용해야하지만 필요할 수도 있습니다.) 앱이 "동형"인 경우 ReactDOM.renderToString()백엔드 코드 에서도 사용 됩니다.

다른 모든 것에는 React가 있습니다. React를 사용하여 라이프 사이클 후크 등의 요소 (예 : 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


53

는에서 v0.14 베타 버전 발표 반응 .

우리는 같은 패키지에 보면 react-native, react-art, react-canvas, 그리고 react-three, 아름다움의 본질은 브라우저 또는 DOM과 아무 상관이 반작용 것이 분명되고있다.

이를보다 명확하게하고 React가 렌더링 할 수있는 더 많은 환경을보다 쉽게 ​​구축 할 수 있도록 기본 반응 패키지를 반응 및 반응 돔의 두 가지로 나눕니다.

기본적으로 React의 아이디어는 브라우저와 관련이 없으며 구성 요소 트리를 렌더링하기위한 많은 대상 중 하나 일뿐입니다. 개발자는 ReactDOM 패키지를 통해 중요하지 않은 코드를 React 패키지에서 제거하고보다 적절한 저장소로 옮길 수있었습니다.

react패키지 포함 React.createElement, React.createClassReact.Component, React.PropTypes, React.Children, 및 요소와 구성 요소 클래스와 관련된 다른 도우미. 우리는 이것을 구성 요소를 작성하는 데 필요한 동형 또는 보편적 인 도우미라고 생각합니다.

react-dom패키지 포함 ReactDOM.render, ReactDOM.unmountComponentAtNodeReactDOM.findDOMNode, 그리고에 react-dom/server우리가 서버 측 렌더링 지원을 ReactDOMServer.renderToString하고 ReactDOMServer.renderToStaticMarkup.

이 두 단락은 핵심 API 메소드의 시작 위치를 설명 v0.13합니다.


6
현재 것은 v15.4.0가 더 이상이 반작용 반작용 없습니다 ReactDOM- facebook.github.io/react/blog/2016/11/16/react-v15.4.0.html
Rycochet

react는 더 이상 React.PropTypes를 포함하지 않습니다. proptype은 'prop-types'라는 자체 저장소를 가지고 있습니다
ncubica

6

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 패키지에는 React.createElement, React.createClass, React.Component, React.PropTypes, React.Children이 포함됩니다.

React-dom 패키지에는 ReactDOM.render, ReactDOM.unmountComponentAtNode, ReactDOM.findDOMNode 및 ReactDOMServer.renderToString 및 ReactDOMServer.renderToStaticMarkup을 포함하는 react-dom / server가 포함됩니다.


이 의견은 원래 질문과 관련이 없지만 귀하의 답변에 require ( 'blah') .. require는 평범하지 않은 js가 아니기 때문에 브라우저에서이를 실행하는 방법을 설명합니다.
joedotnot


4

React reactreact-dom패키지 로 분리 된 것처럼 보이 므로 여기에 https 와 같이 DOM 이외의 경우에 사용하려는 프로젝트에 DOM 관련 부분을 사용할 필요가 없습니다 . 그들이 가져 오는 github.com/Flipboard/react-canvas

var React = require('react');
var ReactCanvas = require('react-canvas');

보시다시피 없이 react-dom.


3

보다 간결하게, react은 컴포넌트를위한 것이고 react-dom은 DOM에서 컴포넌트를 렌더링하기위한 것입니다. 'react-dom'은 컴포넌트와 DOM 사이의 접착제 역할을합니다. 당신은 react-dom의 render () 메소드를 사용하여 DOM에서 컴포넌트를 렌더링 할 것입니다.


0

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).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.