컴포넌트

  • 하나의 UI를 의미(버튼, 이미지, Grid 등등)
  • PascalCase로 작성
  • 컴포넌트 내 로직은 컴포넌트에 변경이 있을 때 마다 호출된다.
export default function App() {
  const [weight, setWeight] = useState(0);
  const [height, setHeight] = useState(0);
  let content;
  let bmi;

  if (weight === 0) content = <div>계산불가</div>;
  else if (height === 0) content = <div>계산불가</div>;

  bmi = weight / (0.01 * 0.01 * height * height);

  if (bmi < 18.5) content = <div>저체중</div>;
  else if (bmi >= 18.5 && bmi < 25) content = <div>정상</div>;
  else content = <div>과체중</div>;

  return (
    <>
      <h1>BMI 계산기</h1>
      <div>
        <label>
          신장
          <input
            type="number"
            onChange={(e) => {
              setHeight(e.target.value);
            }}
          />
        </label>
      </div>
      <div>
        <label>
          체중
          <input
            type="number"
            onChange={(e) => {
              setWeight(e.target.value);
            }}
          />
        </label>
      </div>
      {content}
    </>
  );
}

컴포넌트 분리의 장단점

장점

  • html 페이지의 Item을 각각 파일로 구분하여 유지보수가 용이

단점

  • 분리된 컴포넌트간 데이터 연동 고려 필요
  • 부모 컴포넌트가 자식 컴포넌트에 데이터 전달 방법 필요

컴포넌트 추가

components 폴더 하위에 jsx 생성

image

jsx 파일 작성

export default function AppFooter(){
    return (
        <>
            <h2>AppFooter</h2>
        </>
    )
}

App.Jsx에 import 후 컴포넌트 추가

import AppFooter from "./components/AppFooter";

export default function App(){
  return (
    <>
      <h1>App</h1>
      <AppFooter/>
    </>
  );
}

연결문서

댓글남기기