React 与 ReactDOM?

IT技术 reactjs react-dom
2021-04-11 05:42:26

我有点新来react。我看到我们必须导入两件事才能开始,React而且ReactDOM,谁能解释一下区别。我正在阅读React 文档,但它没有说。

6个回答

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 包含在 Web 和移动应用程序中使用的功能。ReactDOM 功能仅在 Web 应用程序中使用。[更新:经过进一步研究,很明显我对 React Native 的无知正在表现出来。现在,拥有 Web 和移动设备通用的 React 包似乎更像是一种愿望而不是现实。React Native 目前是一个完全不同的包。]

请参阅宣布 v0.14 版本的博客文章:https ://facebook.github.io/react/blog/2015/10/07/react-v0.14.html

关注点分离......我们喜欢看到它
2021-06-14 05:42:26

来自React v0.14 Beta 发布公告

当我们查看像react-native, react-art, react-canvas, 和react-three之类的包时,很明显 React 的美和本质与浏览器或 DOM 无关。

为了更清楚这一点并更容易地构建更多 React 可以渲染的环境,我们将主要的 React 包分为两个:react 和 react-dom。

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

react包包含React.createElementReact.createClassReact.ComponentReact.PropTypesReact.Children和其他与元素和组件类相关的帮助器。我们将它们视为构建组件所需同构或通用助手。

react-dom软件包包括ReactDOM.renderReactDOM.unmountComponentAtNodeReactDOM.findDOMNode,和react-dom/server我们有服务器端渲染的支持ReactDOMServer.renderToStringReactDOMServer.renderToStaticMarkup

这两段解释了核心 API 方法的v0.13最终目的。

react 不再包含 React.PropTypes,proptypes 有自己的名为“prop-types”的存储库
2021-05-31 05:42:26
从 React v15.4.0 开始,React 不再有ReactDOM- facebook.github.io/react/blog/2016/11/16/react-v15.4.0.html
2021-06-15 05:42:26

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 和 react-dom/server,其中包括:ReactDOMServer.renderToString 和 ReactDOMServer.renderToStaticMarkup。

此评论与原始问题无关,但您的回答引入了 require('blah').. 请注意解释如何在浏览器中运行它,因为 require 不是普通的 js ?
2021-06-02 05:42:26

看起来他们已经将 React 分为reactreact-dom包,因此您不必将与 DOM 相关的部分用于您希望在非 DOM 特定情况下使用它的项目,例如https:// github.com/Flipboard/react-canvas 他们导入的地方

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

如你看到的。没有react-dom.

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