なぜ

2016-04-12 7 views
7
私は動作するコードを持っている

のみリアクトインポートした後に反応インポートするが、私は私が代わりに なぜ

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')) 

なぜそのリアクトインポートする必要がreactDomに使用していますどこにもリアクト使用していませんよ?

+0

には自明ではないのですが、

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

ためのコードは確かに、インポートされるように反応する必要はありません。 – 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> 
) 

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

にtranspiledます。これは、あなたが反応インポートする必要がある理由です。 私はあなたの質問に答えることを願っています。

いつでもhttps://babeljs.ioを参照して、getが何に変換されたのかを理解することができます。

0

これは本当に面白い質問です。コードがではないと思われます。はReactを使用しているようですが、それは扱いにくいです。

<Component />略語を使用すると、JSXはBabelによって通常のJavascriptに変換されます。それが答えのいずれかがあなたを助けている場合、その答えに受け入れるをクリックしてくださいリーダー