본문 바로가기
Front/React

[React] JSX

by 오엥?은 2023. 4. 13.
반응형
  • JSX 

:  A syntax extension to JavaScript (자바스크립트의 확장문법)

  JavaScript + XML/HTML

 

 

  • JSX 코드
const element = <h1>Hello, world!</h1>;

 

  • JSX 의 역할

 : JSX 는 내부적으로 XML/HTML 코드를 JavaScript 로 변환하는 과정을 거치게 된다. 그렇기 때문에 실제로 우리가 JSX로 작성해도, 최종적으로는 JavaScript 가 나오게 되는 것이다. 여기서 JSX 코드를 JavaScript 로 변환하는 역할을 하는 것이 React 의 createElement 라는 함수인 것이다.

 

  • JSX 를 사용한 코드
class Hello extends React.Component {
    render() {
    	return <div>Hello {this.props.toWhat}</div>; 
    }
} 

ReactDOM.render(
	<Hello toWhat="World" />,
    document.getElementById('root')
);

 

  • JSX 를 사용하지 않은 코드
class Hello extends React.Component {
    render() {
    	return React.createElement('div', null, `Hello ${this.props.toWhat}`); 
    }
} 

ReactDOM.render(
	React.createElement(Hello, { toWhat: 'World' }, null),
    document.getElementById('root')
);

 

  • 결과
// JSX 를 사용한 코드
const element = (
	<h1 className="greeting">
    	Hello, world!
    </h1>
)


// JSX 를 사용하지 않은 코드
const element = React.createElement(
	'h1'
    { className: 'greeting' },
    'Hello, world!'
)

React.createElement() 의 결과로 아래와 같은 객체가 생성된다.

const element = {
    type: 'h1',
    props: {
    	className: 'greeting',
        children: 'Hello, world!'
    }
}

 

React.createElement(
    type,
    [props],
    [...children]
)

이 코드는 createElement 의 파라미터를 나타낸 것이다.

type 은 element 의 유형,  props 는 속성, children 은 element 가 포함한 자식 element 이다.

 

JSX 를 사용하면 장점들이 많기 때문에 편리하다.                                                  

반응형

'Front > React' 카테고리의 다른 글

[React] 시계 만들기  (0) 2023.04.14
[React] Elements  (0) 2023.04.14
[React] JSX 코드 작성  (0) 2023.04.14
[React] JSX 사용법  (0) 2023.04.13
[React] JSX 의 장점  (0) 2023.04.13