JSX

한서영·2023년 2월 12일

React_begin

목록 보기
2/10

JSX란?

  • JS를 확장한 문법, HTML과 같은 문법 사용하고 있어서 이해 쉽고 가독성 높음
  • createElement를 편리한 도구로 대체하여 사용

✏️ 렌더링

  • 컴포넌트를 다른 컴포넌트에 넣기
  • React.render(react element, html element)
  • react element를 html에 넣기

✏️Babel

  • JSX로 적은 코드를 브라우저가 이해할 수 있는 형태로 바꿔줌
  • 브라우저는 JSX 모름

✏️ arrow function

const Button = () => (
      <button
        style={{ backgroundColor: "tomato" }}
        onClick={() => console.log("im clicked")}

        Click me
      </button>
    );

같은 코드

function Button() {
	return (
      <button
        style={{ backgroundColor: "tomato" }}
        onClick={() => console.log("im clicked")}

        Click me
      </button>
    );
}

🖥️ 코드

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Document</title>
  </head>
  <body>
    <div id="root"></div>
  </body>
  <script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
  <script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
  <script type="text/babel">
    const root = document.getElementById("root");
    function Title() {
      return (
        <h3 id="title" onMouseEnter={() => console.log("mouse enter")}>
          Hello I'm a title
        </h3>
      );
    }

    const Button = () => (
      <button
        style={{ backgroundColor: "tomato" }}
        onClick={() => console.log("im clicked")}
      >
        Click me
      </button>
    );

    const Container = () => (
      <div>
        <Title />
        <Button />
      </div>
    );

    ReactDOM.render(<Container />, root);
  </script>
</html>
  • Container라는 react element 안에 또 다른 react element를 위한 공간을 만들어놓음 -> <Title /> <Button />
  • Title, Button 함수를 만들고 리턴값에 html element 생성

0개의 댓글