어쩌다 알게 된 ƪ(•̃͡•̃͡ ƪ

[문법] 컴포넌트와 props 본문

개발/🟦 React

[문법] 컴포넌트와 props

비니_ 2025. 1. 4. 15:38
728x90

컴포넌트

길어지는 html을 간략하게 사용할 수 있는 것
1. 반복 적인 것
2. 페이지 여러개가 있을 경우 개별 페이지
3. 자주 변경되는 ui

  • 위치: 함수 바깥에 별도 함수로 작성
  • 첫시작은 대문자 파스칼케이스
  • return()으로 시작하여 꼭 하나의 태그로 감싸져 있어야 함

Props

  • React 컴포넌트 간 데이터를 전달하기 위해 사용
  • 읽기 전용 객체
  • 부모 컴포넌트가 자식 컴포넌트에 데이터를 전달할 때 사용
  • 상태를 변경하려면 state를 사용
  • Props로 전달되는 값은 문자열, 숫자, 배열, 객체, 함수 등 어떤 데이터 타입도 가능
import { useState } from 'react'

function App() {
  let [나이, 나이변경] = useState([
      ['민수', 20],
      ['영희', 32],
      ['순신', 5],
      ['맹구', 1],
  ]);

  return (
    <>
      <div className="test">
        <button onClick={() => {
          let name = [...나이];
          name.sort((a, b) => a[0].localeCompare(b[0])); // 이름 기준으로 가나다순 정렬
          // name.sort((a, b) => b[0].localeCompare(a[0])); // 이름 기준으로 가나다순 내림차순 정렬
          나이변경(name);
        }}>이름 정렬</button>

        <button onClick={() => {
          let age = [...나이];
          age.sort((a, b) => a[1] - b[1]); // 나이 기준으로 오름차순 정렬
          // age.sort((a, b) => b[1] - a[1]); // 나이 기준으로 내림차순 정렬
          나이변경(age);
        }}>나이 정렬</button>

        <ul>
          <li>{나이[0][0]}: {나이[0][1]}</li>
          <li>{나이[1][0]}: {나이[1][1]}</li>
          <li>{나이[2][0]}: {나이[2][1]}</li>
          <li>{나이[3][0]}: {나이[3][1]}</li>

          <Li a={0} b={0} c={1} 나이={나이}/>
          <Li a={1} b={0} c={1} 나이={나이}/>
          <Li a={2} b={0} c={1} 나이={나이}/>
          <Li a={3} b={0} c={1} 나이={나이}/>
        </ul>
      </div>
    </>
  )
}

function Li({a,b,c,나이}){
  return(
    <>
      <li>{나이[a][b]} : {나이[a][c]}</li>
    </>
  )
}

 
 

Props vs State

목적부모에서 자식으로 데이터 전달컴포넌트 내부 데이터 관리
변경 가능 여부읽기 전용변경 가능
어디서 관리부모 컴포넌트해당 컴포넌트 내부
데이터 흐름단방향(부모 -> 자식)컴포넌트 자체에서 관리

 

728x90
Comments