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


当前回答

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分为React和React -dom包,所以你不必在非dom特定的情况下使用dom相关的部分,比如这里的https://github.com/Flipboard/react-canvas 他们从哪里进口

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

如你所见。没有react-dom。

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

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

为什么要把他们分开?

React和React dom被分成两个库的原因是React Native(一个用于移动开发的React平台)的到来。

在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包保存了组件、状态、道具和所有react代码的react源。

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

更简洁地说,react用于组件,react- DOM用于在DOM中呈现组件。'react-dom'充当组件和DOM之间的粘合剂。您将使用react-dom的render()方法来渲染DOM中的组件,这就是您开始使用它时所需要知道的全部内容。