본문 바로가기
프레임워크&라이브러리/React.js

JSX

by whale in milktea 2023. 1. 31.

JSX

1. JSX의 코드 그 자체로는 브라우저에서 읽어들일 수 없다. 이로 인해 babel이라는 컴파일러는 사용하게 된다.
2. 중간 렌더링 툴이 필요할만큼 복잡한 JSX가 필요한 이유는, 개발상 용이성 때문이다!
    <div>
      <h2>Hello React!</h2>
    </div>

흔히 볼 수 있는 위의 h2 밑에 "I want to be a developer who increases value"라는 내용을 갖는 태그를 JS를 활용하여 추가하기 위해서는 다음과 같은 2가지 방식이 있다.

// ./App.js
// * JS DOM으로 구현한 코드
const para = document.createElement("p");
para.textContent = "I want to be a developer who increases value";
document.getElementById("root").append(para);

// ./App.js
// * JSX로 구현한 코드
return (
  <div>
    <h2>Hello React!</h2>
    <p>I want to be a developer who increases value</p>
  </div>
);

직접 작성해보니.. 그 차이를 알 수 있다!


JSX 작동방식

JSX는 선언적으로 프로그래밍한다!
1. 선언적 작동방식 : 기능을 구현하기 위해 (react에서는 목표로 하는 상태에 도달하기 위해) 달성 과정에 있어서 "필요한 상태"들을 기술하는 방식
2. 명령적 작동방식 : 기능을 구현하기 위해 (react에서는 목표로 하는 상태에 도달하기 위해) 달성 과정 전반을 기술(프로그래밍)하는 방식

JSX 기본문법

const Component = () => {
  // 함수 선언 (컴포넌트의 기능을 선언)
  return (
    // return () : 실제 컴파일링이 될 컴포넌트의 내용을 인자로 전달
    <div>contents</div>
  );
};

JSX 규칙

1. JSX 내부에 여러 엘리먼트를 작성할 경우 최상위에서 <div>로 감싸주어야 한다.

const Component = () => {
  return (
    <div>
      <h1 className = "btn">contents1</h1>
      <p>contents2</p>
    </div>
  )};

 

2. React에서 여러 개의 HTML 엘리먼트를 활용하고자 할 때는 map() 함수를 이용한다.

const dummy = [
{id : 1, title : "agree", content : "hello"}
{id : 2, title : "disagree", content : "bye"}
]

const Component = () => {
  const content = dummy.map(el) => { // for of 처럼 각 객체를 순회하며 데이터를 담을 el 변수를 선언해서 map함수를 실행
    <div key = {el.id}>
      <p>{el.title}</p>
      <p>{el.content}</p>
    </div>

  return (
    <div>
      {content}
    </div>
  )
  }

 

3. css class 속성을 지정하려면 className으로 지정해야 한다

<!-- HTML에서의 class 지정 -->
<div>
  <h1 class = "btn">contents1</h1>
  <p>contents2</p>
</div>
const Component = () => {
  return (
    <div>
      <h1 className = "btn">contents1</h1>
      <p>contents2</p>
    </div>
  )};

 

5. JSX 중간에 자바스크립트를 사용하려면 중괄호 {}를 이용해야 한다.

const Component = () => {

const name = "haseong";

return (
  <div>
    <h1 className = "name">My name is {name}</h1>
  </div>
)};

5. 컴포넌트는 대문자로 시작해야 한다! (파스칼케이스) ===> JSX로 작성된 컴포넌트 : 사용자 정의 컴포넌트

6. 조건문에서는 if문이 아닌 삼항연산자를 이용한다.

// 삼항연산자 기본문법
function operator (age) {
  (age > 20) ? (<p>구매가능</p>) : (<p>구매불가</p>)
  // (a+b > age) ===> if (age > 20)
  // ? (<구매가능>) ===> {return <p>구매가능</p>}
  // : (<p>구매불가</p>) ===> {return <p>구매불가</p>}
}
const Component = () => {

let age = 28;

return (
  {(age > 20) ? (<p>구매가능</p>) : (<p>구매불가</p>)}
)};

'프레임워크&라이브러리 > React.js' 카테고리의 다른 글

Styled Component  (0) 2023.02.20
useState(), useEffect()  (0) 2023.02.13
States & Props (feat. eventHandler)  (0) 2023.02.06
Component  (0) 2023.02.02
Create-react-app  (0) 2023.01.30