[리액트 교과서] createElement(), component

728x90
반응형

이 글은 리액트 교과서를 보며 공부한 내용을 기록한 글입니다.

 


JSX 없이 리액트 기초를 잡아보자!

React의 엘리먼트컴포넌트 같은 기초 개념을 이해하는 것이 중요하다.

엘리먼트는 컴포넌트의 인스턴스이며, 컴포넌트 클래스라고도 한다. 

엘리먼트를 어떻게, 왜 사용하는지 배워보자

 

var h1 = React.createElement('h1', null, 'Hello world!!!')
	ReactDOM.render(
	  h1,
	  document.getElementById('content')	
	)

ReactDOM.render()에는 하나의 React 엘리먼트만 인자로 전달할 수 있다.

이는 동일 DOM 계층에 h1 요소 두 개를 렌더링해야 하는 경우에 문제가 발생한다.

 

계층적 복잡한 구조를 만드는 방법은 엘리먼트를 중첩하는 것이다.

 

이때, createElement()에 전달하는 매개변수의 수는 제한이 없다.

두 번째 매개변수 이후의 모든 매개변수는 자식 엘리먼트가 된다.

<!DOCTYPE html>
<html>
  <head>
    <script src="js/react.js"></script>
    <script src="js/react-dom.js"></script>
  </head>
  <body>
    <div id="content"></div>
    <script type="text/javascript">
      let h1 = React.createElement('h1', null, 'Hello world!')
      ReactDOM.render(
        React.createElement('div', null, h1, h1),
        document.getElementById('content')
      )
    </script>
  </body>
</html>

 

순서

표준 HTML 요소 탐색 -> 일치한게 있으면 해당 React 엘리먼트 유형으로 사용

-> React 엘리먼트 렌더링 -> DOM에 <div>생성

 

두 엘리먼트가 같은 계층에 위치한다.

 

createElement() 첫 번째 매개변수두 가지 자료형을 입력할 수 있다.

1. 문자열로 작성한 일반적인 HTML 태그

ex) 'h1', 'div', 'p' 처럼 화살괄호가 없는 문자열

2. 사용자 정의 컴포넌트 클래스

ex) 'HelloWorld' 대문자로 시작

 


사용자 컴포넌트 클래스 객체에 대해서 알아보자

- 기능을 느슨하게 결합된 부분으로 분리해서 코드를 재사용 할 수 있다.

- 컴포넌트라고 부르기도 한다.( 웹 컴포넌트 X )

- 속성을 사용하여 React 엘리먼트의 렌더링 결과를 바꾼다. 

- 부모 컴포넌트는 자식 엘리먼트에 속성을 전달할 수도 있다.

- React 컴포넌트를 통해 컴포넌트 기반 아키텍처를 구현할 수 있다.

 

 

 


왜 바닐라 자바스크립트를 공부하라고 하는지 알거같다.

createElement 또한 자바스크립트에서 사용하는 것인데 공부를 안하니까 생소하다고 생각했다.;;

그리고 컴포넌트에 대해서 아직 솔직히 뭔소린지 잘 모르겠다. 

 

출처

리액트 교과서 - 아자트 마르단 지음, 곽현철 옮김

728x90
반응형