我对反应有点陌生。我看到我们必须导入两个东西才能开始,React和ReactDOM,有人能解释一下区别吗?我正在阅读React文档,但它没有说。


当前回答

来自React v0.14 Beta发布公告。

当我们看到React -native、React -art、React -canvas和React -three这样的包时,很明显,React的美丽和本质与浏览器或DOM无关。 为了更清楚地说明这一点,也为了更容易地构建更多React可以渲染的环境,我们将主要的React包分为两个:React和React -dom。

从根本上说,React的想法与浏览器无关,它们只是渲染组件树的众多目标之一。React包允许开发人员从React包中删除任何不必要的代码,并将其移动到更合适的存储库中。

The react package contains React.createElement, React.createClass and React.Component, React.PropTypes, React.Children, and the other helpers related to elements and component classes. We think of these as the isomorphic or universal helpers that you need to build components. The react-dom package contains ReactDOM.render, ReactDOM.unmountComponentAtNode, and ReactDOM.findDOMNode, and in react-dom/server we have server-side rendering support with ReactDOMServer.renderToString and ReactDOMServer.renderToStaticMarkup.

这两段说明了v0.13的核心API方法的最终位置。

其他回答

在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,反应。createClass,反应。组件,反应。proptype,反应。孩子们

React-dom包包含:渲染,ReactDOM。unmountComponentAtNode ReactDOM。findDOMNode和react-dom/server,包括:ReactDOMServer。renderToString和ReactDOMServer.renderToStaticMarkup。

来自React v0.14 Beta发布公告。

当我们看到React -native、React -art、React -canvas和React -three这样的包时,很明显,React的美丽和本质与浏览器或DOM无关。 为了更清楚地说明这一点,也为了更容易地构建更多React可以渲染的环境,我们将主要的React包分为两个:React和React -dom。

从根本上说,React的想法与浏览器无关,它们只是渲染组件树的众多目标之一。React包允许开发人员从React包中删除任何不必要的代码,并将其移动到更合适的存储库中。

The react package contains React.createElement, React.createClass and React.Component, React.PropTypes, React.Children, and the other helpers related to elements and component classes. We think of these as the isomorphic or universal helpers that you need to build components. The react-dom package contains ReactDOM.render, ReactDOM.unmountComponentAtNode, and ReactDOM.findDOMNode, and in react-dom/server we have server-side rendering support with ReactDOMServer.renderToString and ReactDOMServer.renderToStaticMarkup.

这两段说明了v0.13的核心API方法的最终位置。

看起来他们已经将React分为React和React -dom包,所以你不必在非dom特定的情况下使用dom相关的部分,比如这里的https://github.com/Flipboard/react-canvas 他们从哪里进口

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

如你所见。没有react-dom。

React: React是一个javascript库,旨在构建更好的用户界面。

React-DOM: React-DOM是React的一个免费库,它将React粘合到浏览器DOM上

我们正在使用React,每当我们使用render()或findDOMNode()等方法时,我们都在使用React- dom。

当我们看到React -native、React -art、React -canvas和React -three这样的包时,很明显,React的美丽和本质与浏览器或DOM无关。 为了更清楚地说明这一点,也为了更容易地构建更多React可以渲染的环境,他们将主要的React包分为两个:React和React -dom。

react包保存了组件、状态、道具和所有react代码的react源。

React - DOM包顾名思义是React和DOM之间的粘合剂。通常,您只会将它用于一件事:使用ReactDOM.render()将应用程序挂载到index.html文件。