[꼼꼼한 개발자] 꼼코더

[React] - [처음 만난 리액트] - 10. JSX의 장점 및 JSX 사용법 본문

React/처음 만난 리액트

[React] - [처음 만난 리액트] - 10. JSX의 장점 및 JSX 사용법

꼼코더 2023. 7. 1. 16:46
반응형

🧹 두서없이 적는 쉬운 정리

1. JSX 장점 (코드가 간결해진다, 가독성 향상되어 유지보수 용이, Injection Attack 해킹을 방어하여 보안성 향상)

2. JSX는 내부적으로 XML/HTML 코드를 React.createElement() 함수를 통해 자바스크립트로 변환한다.

3. JSX는 자바스크립트에 추가로 XML과 HTML 섞어서 사용하면 된다

4. JSX에서는 중괄호 {} 를 사용하면 무조건 자바스크립트 코드가 들어간다.

5. children은 html을 사용하듯 상위 태그가 하위 태그를 둘러싸도록 하면 자연스럽게 정의된다.

6 가독성도 높으며 간결하고 직관적으로 코드를 작성할 수 있게 해주는 것이 바로 JSX의 역할

 

 

(자세한 내용은 아래 참고)

 

 

🙃 이전 복습

이 전 글에서 'JSX 사용은 필수가 아니다'라고 했다.

이유는 React.createElement()도 같은 기능을 구현 가능하기 때문에.

 

필수가 아니라면 사용하지 않아도 되는 데 사용 시 무슨 장점이 있는 걸까?

대표적인 3가지 장점을 알아보자

 



👍🏻 첫 번째 장점 (간결해지는 코드)

한눈에 봐도 간결해진다.

 

👍🏻 두 번째 장점 (가독성 향상)

가독성이 향상되어 버그를 발견하기 쉽고, 유지보수가 용이하다.

 

👍🏻 3번째 장점 : 보안성 향상(Injection Attack이라 불리는 해킹을 방어)

Injection Attack이라 불리는 해킹을 방어하여 보안성이 향상된다.

 

 코드에는 'title' 변수에 잠재적으로 보안 위험 가능성이 있는 코드가 삽입되어 있다.

그리고 그 아래에 나오는 JSX 코드에서는 괄호 {}를 사용해서 title 변수를 삽입(입베딩) 하고 있다.

 

기본적으로 리액트 DOM은 렌더링 하기 전에 임베딩 된 값을 모두 문자열로 변환한다.

그렇기 때문에 명시적으로 선언되지 않은 값은 괄호 {} 사이에 들어갈 수 없다.

 

이것은 결과적으로 xss 라 불리는 Cross-Site Scripting 어택을 방어할 수 있게 된다.

 

 

 

🤺 Injection Attacks이란?

문자, 숫자처럼 일반적인 값이 아닌 소스코드를 입력하여 해당 코드가 실행되는 해킹 방법

id를 입력하는 입력창에 자바스크립트 코드를 넣고 그 코드 그대로 실행되면 큰 문제가 생길 수 있다.

(XSS(Cross-Site Scripting) 공격)

 

 


 

 

🧑🏻‍💻 JSX 사용법 (기본)

JSX는 자바스크립트 문법을 확장시킨 것, 따라서 모든 자바 스크립트 문법을 지원한다.

자바스크립트에 추가로 XML과 HTML 섞어서 사용하면 된다. (붉은 원 참고)

 

🧑🏻‍💻 JSX 사용법 (XML, HTML 사용 시 자바스크립트 변수 사용)

 xml, html 코드를 사용 시 중간에 자바스크립트 코드를 사용하고 싶으면 중괄호 {}를 사용하여 묶어주면 된다.

아래 코드에서 name이 라는 '자바스크립트 변수'를 참조하기 위해서 중괄호 {}를 사용

 

 

이 코드에서 중괄호 {name}로 표시된 부분이

바로 name라는 자바스크립트 변수를 참조하기 위해서 중괄호 {}를 사용한 것.

 

 

🧑🏻‍💻 JSX 사용법 (XML, HTML 사용 시 자바스크립트 함수 사용)

 html 코드 사이에 괄호 {}  사용해서 자바스크립트 함수도 호출할 수 있다.

아래처럼 JSX 사용 시  xml, html 코드 사이에 중괄호 {}로 자바스크립트 함수를 사용.

 

그리고 아래 코드는 JSX 사용하여 사용자 이름에 따라 다른 인사말을 표시하도록 만든 컴포넌트이다.

 

사용자가 존재한다면? > formatName() 함수를 써서 포맷팅  이름을 출력

그렇지 않을 경우?  > "Hello, Stranger" 출력

 

 

 

🧑🏻‍💻 JSX 사용법 (HTML 태그의 속성 값에 사용)

그렇다면 html 태그 중간이 아닌 태그 속성의 값을 넣고 싶을 때는 어떻게 할까?

(1번째 줄 코드) 그럴 때는 위 코드처럼 큰 따옴표 "" 사이에 문자열을 넣거나

(5번째 줄 코드) 중괄호 {} 사이에 자바스크립트 코드를 넣으면 된다

 

그래서 'JSX에서는 중괄호 {}를 사용하면 무조건 자바스크립트 코드가 들어간다.'라고 생각하면 된다.

 

 

 

🧑🏻‍💻 JSX 사용법 (children 정의)

평소 html을 사용하듯 상위 태그가 하위 태그를 둘러싸도록 하면 자연스럽게 children이 정의된다.

여기에서 <div> 태그에 children  <h1> 태그와 <h2> 태그가 된다. 

 

이처럼 가독성도 높으며 간결하고 직관적으로 코드를 작성할 수 있게 해주는 것이 바로 JSX의 역할이다.

 

 

 

 

 

 

 

 

위 내용은 '소플' 님의 '처음 만난 리액트' 영상을 참고하여 작성되었습니다.

 

 

 

 

 

 

 

 

Comments