2016-04-12 160 views
7

我有代码导入工作后做出反应,但只有我不使用任何地方作出反应我使用reactDom代替为什么导入反应

import ReactDOM from 'react-dom' 
import React, {Component} from 'react' 

class App extends Component { 
    render() { 
    return (
     <div>comp </div> 
    ) 
    } 
} 

//ReactDOM.render(<App/>, document.getElementById('root')) 
ReactDOM.render(<div>sv</div>, document.getElementById('root')) 

为什么它需要进口作出反应?

+0

如果有任何问题的答案帮助了你,请点击接受这个答案。 – heyhugo

回答

13

尽管您没有明确使用您导入的React实例,但JSX被转译为React.createElement()调用,该调用使用它。

在你的例子中,<div>comp </div>被Babel转换为React.createElement('div', null, 'comp')

0

我曾经认为,如果ReactDOM使用React,那么它会照顾导入它。但事实并非如此。在源代码中的JSX被转换之后,显然它明确使用了React包。因此它是必需的。

React.createElement('div', null, 'comp') 
1

阵营进口需要,因为下面的JSX代码: -

(
    <div>comp </div> 
) 

被transpiled到

React.createElement(
    "div", 
    null, 
    "comp " 
); 

这是你需要输入做出反应的原因; 我希望能回答你的问题。

您总是可以参考https://babeljs.io了解转换为什么。

0

这是一个非常有趣的问题,因为你是对的代码不看起来就像它使用React,但它是棘手的。

任何时候您使用简写<Component />代码实际发生的事情是JSX被Babel转换为常规Javascript的东西。

<Component/> 
// Is turned into 
React.createElement(...) 

因此代码确实确实需要应对进口,虽然不是很明显读者