본문으로 바로가기

Vite로 React 시작하기

category React.js 2025. 1. 21. 12:17

Vite

Vite는 CRA와 같이 리액트 프로젝트를 풀 세팅해주는 빌드 도구입니다.

WebPack을 사용하는 대신 Esbuild를 사용합니다.

 

 

 

프로젝트 시작하기

yarn create vite "폴더명" --template react

 

프로젝트가 생성되었다면

yarn dev

 

를 통해 프로젝트를 실행해 봅시다.

 

컴포넌트

컴포넌트를 통해 UI를 재사용 가능한 여러 조각으로 나눔으로써, 코드의 가독성과 유지보수성을 높이고, 각 조각을 독립적으로 개발 및 관리할 수 있습니다. 이는 동일한 UI 패턴을 여러 곳에서 효율적으로 재사용하거나, 특정 부분만 업데이트해야 할 때도 전체 UI에 영향을 주지 않고 변경할 수 있도록 도와줍니다.

 

const App = () => {
  return (
    <div>
        <Greeting/>
        <Greeting/>
        <Greeting/>
    </div>
  )
}

const Greeting = () => {
    return <div>Hello, World</div>
}

Props

부모 컴포넌트가 자식 컴포넌트에게 물려준 데이터입니다. 부모 -> 자식 방향으로만 흐름(단방향)

const App = () => {
    const name1 = '김덕배';
    const name2 = '손흥민';
    const name3 = '황희찬';
    return (
        <div>
            <Greeting name={name1}/>
            <Greeting name={name2}/>
            <Greeting name={name3}/>
        </div>
    );
};

const Greeting = ({name}) => {
    return <div>Hello, {name}</div>;
};

 

Props Children

App 컴포넌트에서 보낸 '김덕배'라는 정보는 children이라는 이름으로 가져올 수 있습니다.

const App = () => {
    return (
        <div>
            <Greeting>김덕배</Greeting>
        </div>
    );
};

const Greeting = ({children}) => {
    return <div>Hello, {children}</div>;
};

 

Default Arguments

props의 기본값을 정의해줍니다.

부모로부터 children을 받지 못했을 경우 기본값인 '김덕배'를 이용하여 에러 없이 컴포넌트를 렌더링할 수 있습니다. 

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

const Greeting = ({children = '김덕배'}) => {
    return <div>Hello, {children}</div>;
};

State

내부에서 바뀔 수 있는 값을 의미합니다. 

state가 변경되면 해당 컴포넌트를 리렌더링합니다.State는 React 컴포넌트 내부에서 바뀔 수 있는 데이터를 의미합니다.

State는 컴포넌트의 동적인 동작을 가능하게 하며, 값이 변경될 때마다 UI가 다시 렌더링됩니다. 

이 때, useState Hook을 사용합니다. 예시로 보시죠.

 

const App = () => {
    const [name, setName] = useState('');
    const onClickBtn = (e) => {
        setName(e.target.value);
    }
    return (
        <div>
            <Goal name={name} onClickBtn={onClickBtn}></Goal>
        </div>
    );
};

const Goal= ({name, onClickBtn}) => {
    return (
    <div>
        <h1>{name === '' ? '필드 골이 없습니다.' : `${name} 골!!!`}</h1>
        <GoalBtn value={'김덕배'} onClickBtn={onClickBtn}/>
        <GoalBtn value={'손흥민'} onClickBtn={onClickBtn}/>
        <GoalBtn value={'황희찬'} onClickBtn={onClickBtn}/>
    </div>
    );
};

const GoalBtn = ({value, onClickBtn}) => {
    return(
        <button onClick={onClickBtn} value={value}>{value}</button>
    )
}