이제까지 리액트를 아무렇지 않게 써왔다.
뷰를 위한 것 컴포넌트를 작성하는 것.
어떤 코드가 어떤 라이브러리가 어떤 역할을 하는지 생각 해본 적 없이.
컴포넌트를 생성하기 위한 코드이다.
const App = function(){
return <div>Hi!</div>;
}
App이란 상수값은 함수이며
return으로 JSX문법으로 Hi!를 리턴할 것이다.
이것은 React의 역할이 아닌 babel과 webpack의 역할이다.
자 그럼 이것을 렌더링 하기 위해서 리액트가 필요할 것이다.
import React from 'react';
React.render(App);
react라이브러리를 불러온다. 이 때 경로가 없이 불러오는 것은 모두 node_modules에 위치하는 것이다.
위의 코드를 실행하면 에러가 발생한다.
이유는 React는 React를 이해하고 생성 관리하며 JSX를 이해하는 것이지 DOM에 출력하기 위한 라이브러리가 아니기 때문이라고 한다.
import ReactDOM from 'react-dom';
ReactDOM.render(App);
고로 다음과 같이 ReactDOM을 추가하고 다시 렌더링하면
인스턴스를 render하라는 오류가 난다.
App을 클래스라고 봤을 때,
JSX는 이를 인스턴스화 하기 위해 다음과 같이 사용한다.
<App></App>
ReactDOM.render(<App />);
이제 새로운 에러가 발생하는데
렌더링 하는데 App은 타겟 컨테이너가 아니라고 한다.
타겟 컨테이너는 결국 root가 될 곳
컴포넌트가 어디에 위치하는지 지정하라는 것이다.
render메소드는 두번째 파라미터로 컴포넌트의 위치를 지정해 줄 수 있다.
ReactDOM.render(<App />, document.querySelector('.container'));
이로써 실행 될 것이다.
'FrontEnd > React' 카테고리의 다른 글
[React]함수형 컴포넌트와 클래스형 컴포넌트 (0) | 2018.12.29 |
---|---|
[React] 컴포넌트 분리 및 searchbar (0) | 2018.12.29 |
[React&Redux]보일러 프로젝트를 통한 리덕스 (0) | 2018.12.29 |
[Error] POST https://localhost:3000/ 404 (0) | 2018.12.29 |
[FrontEnd]FacebookLogin (0) | 2018.12.28 |