2016-09-29 21 views
6

私は反応してES6のbabelを使用していますが、新しいバージョンの反応では、反応するDOMはもはやその一部ではありません。コードの下に私の疑いは、それは最初の行が必要ですか?どこにもReactが必要なので、最後の行にはReactDOMが必要です。 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

はい、必須です。 return文は 'React 'に変換されます。createElement'と他のステートメント。 ReactDOMはReactにも依存します。 – Li357

答えて

9

以降のバージョン0.14からの反応は、反応およびReactDOMに分割されます。あなたはReactDOM to render you HTML elementを利用しています。したがって、あなたのコンポーネントにはimport ReactDOMが間違いなく意味があります。 Reactを直接使うのではありませんが、実際のDOM要素を作成するreturn statement will be transpiled into React.createElement関数で何を書いても間接的に使われていますが、Reactに関する限りです。

は今、あなたはあなたのコード内で反応省略した場合、これは、あなたが

が反応するというエラーが表示されます見ることができます

存在せず、それはReact is not recognised in React.createElement.はあなたがそれを理解願ってあなたを与えるだろう。彼らは、バージョン0.14から分離し、任意のためにしている

1

このパッケージは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はライブラリが分割された最初のリリースです。

後方互換性をサポートしたいので、彼らはReactの内部DOMを保持しましたが、人々はそれを使用しないようにしますin a funny way

0

あなたは両方を含める必要があり、プロジェクトを反応させ、DOMにレンダリングすることができませんでしたReactDOMせず、ReactDOMを反応させるのに敷設されており、に反応します、回答は大きいですはい