2016-04-12 128 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(...) 

因此代碼確實確實需要應對進口,雖然不是很明顯讀者