2016-09-29 112 views
6

我使用ES6 babel反应,现在对于新版本反应,反应DOM不再是它的一部分。我对以下代码的怀疑是,它是否是第一行要求?因为无处我需要React,但最后一行我需要ReactDOM。反应与反应DOM混淆

const React = require('react') 
const ReactDOM = require('react-dom') 

const App =() => { 
    return (
     <div className='app-container'> 
      <div className='home-info'> 
       <h1 className='title'>sVideo</h1> 
       <input className='search' type='text' placeholder='Search' /> 
       <button className='browse-all'> or Browse All</button> 
      </div> 
     </div> 
    ) 
} 

ReactDOM.render(<App />, document.getElementById('app')) 
+2

是的,它是必需的。返回语句被转译为'React。createElement'和其他语句。 ReactDOM也依赖于React。 – Li357

回答

9

从版本0.14起的反应分为两部分:反应ReactDOM。您正在使用ReactDOM to render you HTML element。因此,您在组件中对import ReactDOM绝对有意义。但是就React而言,虽然您并未直接使用React,但它是间接使用的,因为无论您在您的return statement will be transpiled into React.createElement函数中编写哪个函数,都会创建实际的DOM元素。

现在你可以看到这一点,如果你省略反应。在你的代码,你会看到一个错误,

反应不存在

,它会给你React is not recognised in React.createElement.希望你了解它。

1

ReactDOM文档:

这个包作为DOM相关的渲染通道的入口点。它的目的是与同构React配对,它将作为对npm的反应而发运。

因此,您的ReactDOM专门用于渲染的DOM相关路径。这使用来与React包本身紧密结合,但React中内置的DOM已被弃用。

现在,Facebook将ReactDOM单独作为自己的软件包发布,因此,如果您计划渲染任何React,则需要将其包含在您的应用中。而且你也一定需要React本身 - ReactDOM只是DOM方面。


这是reddit post that explains the separation from React and ReactDOM

React团队正致力于将所有与DOM相关的东西提取到名为ReactDOM的单独库中。 0.14是图书馆分裂的第一个版本。

小有趣的事实,因为他们希望支持向后兼容性,他们不停地做出反应的内部DOM,但使用它in a funny way震慑人心。

0

他们是从0.14版本分开,对于任何反应的项目,则需要包括,ReactDOM是铺设在阵营,并阵营,没有ReactDOM不能被渲染到DOM ,所以答案是很大的是的