프레임워크\라이브러리/React

1112 리액트와 JSX 문법

thinktank911 2025. 11. 12. 10:24

타입스크립트 기반 리액트

리액트란 무엇인가?

  • 자바스크립트 라이브러리의 하나
  • 사용자 인터페이스 만들기 위해 페이스북에서 개발
  • 싱글페이지 어플리케이션(SPA) 및 모바일 어플리케이션 개발 가능
  • 랜더링 : 화면 띄우기

리액트 동작 원리

  • 초기 랜더링 : 초기화면 띄우기
  • 가상 DOM 변경 : 실제 돔 복사한 환경. 화면 깜박임 없애기 위해
  • 재조정
  • 실제 DOM 업데이트

DOM(Document Object Model, 문서 객체 모델)
DOM은 넓은 의미로 웹 브라우저가 HTML 페이지를 인식하는 방식을 의미한다. 조금 좁은 의미로 본다면 document 객체와 관련된 객체의 집합을 의미할 수도 있다.

※ 랜더링된 화면이 브라우저에 나타나는 과정
랜더링 ➡️ html마크업 ➡️ DOM 주입➡️ 브라우저

프로젝트 생성

  • 리액트 홈페이지 : https://ko.react.dev/
  • 타입스크립트 기반 리액트 프로젝트 생성
    • npx create-react-app todolist --template typescript
  • 파일 구조 살펴보기
    • index.html ➡️ index.tsx ➡️ App.tsx

JSX 문법

특징

  • 가상돔에서 컴포넌트 변화를 빠르게 감지하기 위해 최상위 div 한개만 지정(프래그먼트 태그<></> 가능)
return ( 
    // 최상위 부모 태그가 반드시 있어야 <></> 
    <div className="container"> 
        <h1 className='test'>Hello, 리액트!!</h1> 
        <p>반갑습니다</p> 
    </div> 
);
  • React “엘리먼트(element)” 자동 생성
    • 다음은 JSX 문법을 사용하지 않았을 때 React 엘리먼트를 생성하는 방법이다.
function App() {
   return React.createElement("div", null, "Hello, 리액트!!")
}
  • 자바스크립트 코드는 {}안에서 표현 
    • 조건문으로 분기 처리 하고 싶을 땐 삼항연산자로 표현한다.
  let name = "리액트";

  return (
    // 최상위 부모 태그가 반드시 있어야 <></>
    <div className="container">
      {/* 자바스크립트 코드는 {}안에서 표현 */}
      <h1 style={style} className='test'>Hello, {name}!!</h1>
      <p>반갑습니다</p>
      
//==========조건 분기 처리==================
<h1 style={style} className='test'>Hello, 
        {
          name === '리액트' ? (<h1>YES</h1>) : null
        }!!</h1>
      <p>반갑습니다</p>

 

  • 인라인스타일링 작성법
    • 다른 파일과 스타일링을 공유하고 싶지 않을 때 사용한다.
    • background-color => backgroundColor
    • style = {style}로 표현

  // 인라인 스타일링 : 공유하고 싶지 않을 때  
  const style = {  
  backgroundColor : 'black',  
  color : 'white',  
  fontSize : '48px',  
  fontWeight : 'bold',  
  padding : '20px'  
  }

  return (
    // 최상위 부모 태그가 반드시 있어야 <></>
    <div className="container">
      {/* 자바스크립트 코드는 {}안에서 표현 */}
      <h1 style={style} className='test'>Hello, 
  • 변수가 undefined일 때 표현법
    ➡️  || 사용
const port = undefined;  
return (
    {  
    port || '포트를 설정하지 않았습니다.'  
    }
)
  • 클로징 태그 반드시 해야 한다 : <br />, <input />
  • 주석문 작성
    {/*
    작성자 : kyj
    작성일 : 2025.02.10.
    내용 : 기능에 대한 내용
    */}

리액트를 사용할 때 JSX 문법을 자연스럽게 사용해왔지만 개념이나 특성을 이해하지 않고 적용했던 것 같다. 확실히 정리할 수 있었던 시간이었다.