본문 바로가기
Web Service/React

[영화 웹 서비스 만들기] #3. JSX

by junnykim 2022. 3. 14.

~2.6까지의 강의

 

JSX는 자바스크립트를 확장한 문법이다.

기본적으로 리액트 요소를 만들 수 있게 해주고, html에서 사용한 문법과 흡사하다.

앞에서 배운 것과 비교해보자.

 

createElement

const h3 = React.createElement(
            "h3",
            {
                id:"title",
                onMouseEnter: ()=> console.log("mouse enter"),
            } , 
            "Hello, I'm a span"
        );

 

JSX

const Title=(
            <h3 id="title" onMouseEnter={() => console.log("mouse enter")}>
                Hello I'm a title
            </h3>
        );

 

 

createElement

 const btn = React.createElement(
            "button",
            {
                onClick:()=>console.log("i'm clicked"),
                style:{
                    backgroundColor:"tomato",
                },
            },
            "Click me"
        );

 

JSX

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

 

전체코드 JSX

JSX가 createElement 사용하는 것 보다 기존에 알던 코드랑 비슷해서 이해하기가 쉽다. (html이랑 별 다른 점이라고 할 게 없는것 같음)

 

 

createElement

const container = React.createElement("div", null,[h3,btn]);
ReactDOM.render(container,root);

 

JSX

const Container =(
            <div>
                <Title />
                <Button />
            </div>
            );
ReactDOM.render(Container,root);

위의 것을 사용하기 위해서 함수를 만든다.

<Title />, <Button />으로 나타내면, 그 자리에 똑같은 게 들어간다. (코드 복붙이랑 똑같음)

주의할 점은 첫 글자는 무조건 대문자로 나타낼 것!

 

함수로 나타내기 위해서 사용 할 것은

 

두개는 같은 의미이다. 이때 () => () 는 arrow function이다.

function A(){
return();
}
const A = () => ();
 

 

최종

<!DOCTYPE html>
<html>
    <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("i'm clicked")}
            >
            Click me
            </button>
        );

        const Container =(
            <div>
                <Title />
                <Button />
            </div>
            ); 
        ReactDOM.render(Container,root);
    </script>
</html>

 

 

댓글