반응형

JSX는 편리한 문법이지만 올바르게 사용하기 위해 규칙을 따라야 합니다.

요소는 감싸져 있어야 한다.


컴포넌트에 여러 요소가 있다면 반드시 부모 요소 하나로 감싸야 합니다.

지난번 hello-react 프로젝트의 src 폴더 안 App.js 파일을 열어보겠습니다.

function App() {
  return (
   
      <h1>Hello React!!</h1>
      <h2>안녕하세요 주녘입니다.</h2>
   
  );
}

export default App;

이러한 형태의 코드는 작동하지 않습니다. 터미널을 열어 웹 브라우저에서 확인해 볼까요?

 

이러한 오류는 요소들이 부모 요소 하나에 의하여 감싸져 있지 않기 때문에 오류가 발생한 것입니다.

이러한 오류 수정은 아래 코드와 같이 작성하면 해결됩니다.

 

function App() {
  return (
    <div>
      <h1>Hello React!!</h1>
      <h2>안녕하세요 주녘입니다.</h2>
    </div>
  );
}

export default App;

요소사이에 <div></div> 태그로 감싸주면 오류가 해결됩니다.

중요한 JSX 규칙 중 하나는 return 이후에는 한 개의 태그로 둘러싸여 있어야 한다는 것입니다.

 

또는 리액트에서 제공하는 Fragment를 사용할 수 있습니다. Fragment는 두 가지 방법으로 사용가능합니다.

 

react에서 Fragment를 import 해서 사용하거나 빈 태그로 감싸면 됩니다.

 

import { Fragment } from "react";
function App() {
  return (
    <fragment>
      <h1>Hello React!!</h1>
      <h2>안녕하세요 주녘입니다.</h2>
    </fragment>
  );
}

 

export default App;
 

 

function App() {
  return (
    < >
      <h1>Hello React!!</h1>
      <h2>안녕하세요 주녘입니다.</h2>
    </ >
  );
}

 

export default App;

 

 

JSX에서의 JS표현


JSX 안에서 자바스크립트 표현식을 사용할 수 있습니다. JSX 내부에서 코드를 {   }로 감싸면 됩니다.

 

function App() {
  // 변수와 함수를 선언하는 곳
  const name = "주녘";
 
  return (
    <div>
      <h1>Hello {name}!!</h1>
      <h2>안녕하세요 {name}입니다.</h2>
    </div>
  );
}

export default App;

 

JSX에서 if문을 쓰고 싶다면? - 조건부 연산자를 활용!


JSX 내부에서 자바스크립트 표현식에서 if문을 사용할 수 없습니다.

if문을 사용하기 위해서는 JSX 밖에서 if문을 사용하여 값을 미리 설정하거나 JSX 내부에서 { } 안에 조건부 연산자를 사용하면 됩니다. 우리가 알고있는 삼항 연산자를 생각하면 됩니다.

 

function App() {
  // 변수와 함수를 선언하는 곳
  const name = "주녘";

  return (
    <div>
      {name === "주녘" ? <h1>주녘입니다.</h1> : <h2>주녘이가 아닙니다.</h2>}
    </div>
  );
}

export default App;

위와 같이 실행하면 결과화면이 주녘입니다. 라고 뜨겠죠?

만약 name의 값이 주녘이 아닌 철수이면 어떻게 될까요? 값을 변경해봅시다.

 

function App() {
  // 변수와 함수를 선언하는 곳
  const name = "철수";

  return (
    <div>
      {name === "주녘" ? <h1>주녘입니다.</h1> : <h2>주녘이가 아닙니다.</h2>}
    </div>
  );
}

export default App;

반응형

'React > 이론' 카테고리의 다른 글

리액트 컴포넌트의 생명주기(LifeCycle) : 생성/수정  (0) 2023.08.30
CSS 적용  (0) 2023.08.30
Props  (0) 2023.08.30
화면 출력  (0) 2023.08.30
Hello! React  (0) 2023.08.30

+ Recent posts