我对反应有点陌生。我看到我们必须导入两个东西才能开始,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方法的最终位置。

其他回答

ReactDOM模块公开了dom特定的方法,而React拥有核心工具,旨在由React在不同平台上共享(例如React Native)。

http://facebook.github.io/react/docs/tutorial.html

React和ReactDOM最近才被分成两个不同的库。在v0.14之前,所有的React功能都是React的一部分。这可能是一个困惑的来源,因为任何稍微过时的文档都不会提到React / ReactDOM的区别。

顾名思义,ReactDOM是React和DOM之间的粘合剂。通常,你只会用它做一件事:用ReactDOM.render()安装。ReactDOM的另一个有用特性是ReactDOM. finddomnode(),您可以使用它直接访问DOM元素。(在React应用程序中应该少用,但可能是必要的。)如果你的应用是“同构”的,你也可以在后端代码中使用ReactDOM.renderToString()。

对于其他的事情,有React。你使用React来定义和创建你的元素,用于生命周期钩子等,即React应用程序的核心。

React和React dom被分成两个库的原因是React Native的到来。React包含在web和移动应用程序中使用的功能。ReactDOM功能仅在web应用中使用。[更新:经过进一步的研究,很明显我对React Native的无知正在显现。现在,让React包在网络和移动设备上都通用似乎更像是一种愿望,而不是现实。React Native目前是一个完全不同的包。

查看发布v0.14的博文: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html

来自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- DOM用于在DOM中呈现组件。'react-dom'充当组件和DOM之间的粘合剂。您将使用react-dom的render()方法来渲染DOM中的组件,这就是您开始使用它时所需要知道的全部内容。

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

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

如你所见。没有react-dom。