Front-End/React

React Component

코드깎는머슴 2024. 8. 30. 21:38
728x90
반응형

React Component

 

 

오늘도 먼저 잠깐 코드 작성 시 주의점을 살펴보고 가자.

우리가 지금 return 문 안의 소괄호 안에 HTML 태그를 사용 중인데,

반드시 하나의 HTML 태그만 시작되고 끝나야 한다.

아래와 같은 경우는 허용하지 않는다.

return (
    <div></div>
    <div></div>
    <div></div>
    <div></div>
);

위 처럼 하려면, 4개의 div 태그를 감싸는 큰 div 태그를 만들고 그 안에 집어넣어야 한다.

 

이제 Component를 사용하는 것을 보자.

 

 

1. 사용법

function Example() {
    return (
      <div></div>
    );
}

위와 같이 선언하고, 아래 처럼 사용한다.

    //...~~
    <Example></Example>
</div>

이러면 리턴문에 있는 값이 내가 컴포넌트를 사용 중인 곳에 반환된다.

 

그리고 여러개의 태그가 나열될 때, 전체를 묶는 태그를 fragment 문법으로 작성하면, 그냥 <></>만 쓰면 된다.

return (
    <>
        <div></div>
    </>
);

 

그리고 컴포넌트도 화살표 함수를 지원한다.

const temp = () => {
    return (
        <div></div>
    );
}

 

 

2. 사용시 주의점

컴포넌트의 첫 글자는 대문자로 시작한다.

소문자로 할 경우 렌더링이 제대로 되지 않는다.

 

새 컴포넌트를 만들 때 function App()과 동등하게 만들면 된다.

생긴거만 봐도 알겠지만 당연히 App()도 하나의 컴포넌트다.

 

객체지향이랑 비슷한 느낌이었는데, 찾아보니 그 정도는 아니지만 얼추 비슷한 게 맞다고 한다.

 

 

 

3. 사용처

그렇다면 어떤 것들을 component로 만들면 좋을까??

 

1. 반복해서 사용되는 HTML

2. 자주 바뀌는 HTML UI

 

 

 

4. 단점

유용해 보이는 component도 당연히 단점이 있다.

state를 사용하려고 할 때, state의 스코프 때문에 문제가 생긴다.

 

 

예시

let [글제목, 글제목변경] = useState(['8월 20일 노트', '8월 21일 노트', '8월 22일 노트']);

지금 이 state는 App에서 선언되었다.

 

function Example() {
    return (
      <div></div>
    );
}

따라서 이 컴포넌트에서 글제목을 사용하려고 하면 당연히 사용이 안된다.

 

상위 컴포넌트에서 만든 state를 이용하려면 props 문법을 사용해야 한다.

728x90
반응형