React

JSX 란?

왕돼지티라노 2024. 4. 28. 15:21
반응형

JSX

JavaScript + XML/HTML 이 결합된 구조이다.

 

JSX 코드 예시

const element = <h1> Hello, world!</h1>;

 

JSX의 역할

내부적으로 XML/HTML 코드를 JavaScript로 변환한다. → JSX코드로 작성해도 결과적으로는 JavaScript 코드가 나오게 된다.

JSX → JavaScript로 변환하는 함수가 바로 React.createElement 함수이다!

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

 

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를 사용하지 않더라도 리액트의 createElement 함수를 사용해야한다. 
리액트에서 JSX를 사용하는 것이 필수는 아니지만, 사용하게되면 사용성과 가독성이 매우 올라간다!

 

JSX의 장점

1. 간결한 코드, 가독성, 유지보수 쉬움(버그를 발견하기 쉬움!)

//JSX 사용함
<div>Hello, {name}</div>

//JSX 사용안함
React.createElement('div', null, `Hello, ${name}`);

2. Injection Attacks 방어
보안성 ↑

 

JSX 사용법

function formatName(user) {
	return user.firstName + ' ' + user.lastName;
}

const user = {
	firstName : 'Pig',
    lastName: 'Wang'
};

const element = (
	<h1>
    	Hello, {formatUser(user)}
    </h1>
);

ReactDOM.render(
	element,
    document.getElementById('root')
);

Html 코드 안의 중괄호({ }) 안에 자바스크립트 코드를 넣을 수 있다. (자바스크립트 변수, 자바스크립트 함수 사용 가능)

//Book.jsx
import React from "react";

function Book(props) {
	return (
            <div>
                <h1>{`이 책의 이름은 ${props.name}입니다.`}</h1>
                <h2>{`이 책은 총 ${props.numOfPage}페이지로 이뤄져 있습니다.`}</h2>
            </div>
    );
}

export default Book;


//Library.jsx
import React from "react";
import Book from "./Book";

function Library(props) {
	return (
            <div>
                <Book name="처음 만난 파이썬" numOfPage={300} />
                <Book name="처음 만난 AWS" numOfPage={400} />
                <Book name="처음 만난 리액트" numOfPage={500} />
            </div>
        );
}

export default Library;

//index.js
import React from "react";
import ReactDOM from "react-dom";

import Library from "./folder/Library";

ReactDOM.render(
    <React.StrictMode>
    	<Library />
    </React.StrictMode>
    document.getElementById('root')
);

 

cf) jsx를 사용하지 않았을 경우

import React from "react";

function Book(props) {
	return React.createElement(
    	'div'
        null,
        [
        	React.createElement(
            	'h1',
                null,
                `이 책의 이름은 ${props.name}입니다.`
            ),
            React.createElement(
            	'h2',
                null,
                `이 책은 총 ${props.numOfPage}로 이뤄져 있습니다.`
            
            )
        ]
    )
}

export default Book;

코드의 양도 많고 가독성도 떨어진다..

React를 사용할때는 jsx는 필수이다!

반응형

'React' 카테고리의 다른 글

React - Component 와 props  (0) 2024.04.28
리액트의 Element  (0) 2024.04.28
React 소개와 간단한 연동  (0) 2024.04.23