React需要分离与生成Web应用程序(HTML DOM)无关的核心反应代码。特别是本机反应,React Native和ReactRine需要一组不同的包 react-dom 不是其中之一。
react-dom
如果反应库从未拆分过与DOM相关的代码,那么反应本机项目会有核心反应代码,这些代码将是自重的,然后需要使用树抖动和死代码消除来删除,以删除您从未导入过的模块作为您应用的一部分。
有了反应拆分这个代码很有意义。
来自的文档 ReactDOM :
ReactDOM
此包用作DOM相关呈现路径的入口点。它旨在与同构React配对,它将作为对npm的反应而发货。
所以你的 ReactDOM 专门用于DOM相关的渲染路径。这个 用过的 与React包本身紧密结合,但React中的内置DOM已被弃用。
现在,Facebook将ReactDOM作为自己的软件包单独发布,所以是的,如果你计划渲染你的任何React,你需要将它包含在你的应用程序中。你也一定需要 React 本身 - ReactDOM 只是DOM方面。
React
这是一个 reddit帖子解释了与React和ReactDOM的分离 。
React团队正致力于将所有与DOM相关的东西提取到一个名为ReactDOM的独立库中。 0.14是分割库的第一个版本。
很有趣的事实,因为他们想要支持向后兼容性,他们保留了React的内部DOM但阻止人们使用它 以一种有趣的方式 。
它们与版本0.14分开,对于任何反应项目,您需要包括两者, 的 ReactDOM 强> 正在铺设 的 应对 强> ,和 的 应对 强> 没有 的 ReactDOM 强> 无法呈现给 的 DOM 强> 所以答案很大 的 是 强> !
从版本反应 0.14 以后分为两部分: 的 应对 强> 和 的 ReactDOM。 强> 你正在利用 ReactDOM to render you HTML element 。所以对你来说绝对有意义 import ReactDOM 在您的组件中。但就React而言,虽然你没有直接使用React,但它是间接使用的,因为无论你在你的中写什么 return statement will be transpiled into React.createElement 将创建实际DOM元素的函数。
0.14
ReactDOM to render you HTML element
import ReactDOM
return statement will be transpiled into React.createElement
现在你可以看到这个,如果你在代码中省略了React,你会看到一个错误
反应不存在
它会给你 React is not recognised in React.createElement. 希望你理解它。
React is not recognised in React.createElement.