Vue3를 어느 정도 알고 있기 때문에 Vue3와 비교하여 리액트를 공부해보자
기본문법 4가지를 비교하여 정리하기 전 가장 큰 차이는 Vue는 '디렉티브(v-if, v-for)' 중심이고, 리액트는 '순수 자바스크립트' 중심이라는 점
1. 변수 바인딩 (Data Binding)
Vue에서는 데이터 바인딩을 위해 {{ }}를 쓰지만, 리액트는 중괄호 { } 하나만 사용
또한 리액트는 단방향 데이터 흐름을 가짐
- Vue3:
<p>{{ message }}</p> - React:
<p>{message}</p>
function App() {
const name = "React";
return (
<div className="container"> {/* class 대신 className 사용 */}
<h1>Hello, {name}!</h1>
<img src={logo} alt="logo" /> {/* 속성 바인딩도 { } 사용 */}
</div>
);
}
2. 조건부 렌더링 (Conditional Rendering)
리액트에는 v-if가 없음. 대신 자바스크립트의 논리 연산자(&&)나 삼항 연산자를 사용
- Vue3:환영합니다!
- React:
{isLoggedIn &&환영합니다!} (간단한 조건)
{isLoggedIn ?환영합니다!:로그인하세요.} (If-Else 상황)
3. 리스트 렌더링 (List Rendering / 반복문)
리액트에는 v-for가 없음. 자바스크립트 배열 메서드인 .map() 을 사용하여 배열을 HTML 요소로 변환
- Vue3:
- {{ item.text }}
- React:
const items = [{id: 1, text: '사과'}, {id: 2, text: '바나나'}];
function MyList() {
return (
<ul>
{items.map((item) => (
<li key={item.id}>{item.text}</li> // key값은 필수!
))}
</ul>
);
}
4. 상태 관리(State)
Vue3의 ref()나 reactive() 대신, 리액트는 useState Hook 을 사용. 리액트의 상태는 불변성(Immutability) 을 지켜야 하므로 값을 직접 수정하지 않고 반드시 'setter 함수'를 써야 함.
- Vue3: const count = ref(0); count.value++;
- React:
import { useState } from 'react'; function Counter() { const [count, setCount] = useState(0); // [현재값, 변경함수] return ( <button onClick={() => setCount(count + 1)}> 클릭: {count} ); }
5. 정리
| 기능 | Vue3 (Composition API) | React (Hooks) |
| 데이터 바인딩 | {{ value }} | { value } |
| 속성(Attribute) 바인딩 | :src="url" | src={url} |
| 이벤트 바인딩 | @click="handler" | onClick={handler} |
| 조건부 렌더링 | v-if, v-else | {cond && ...} 또는 {cond ? A : B} |
| 리스트 렌더링 | v-for="item in list" | list.map((item) => ...) |
| 상태(State) 관리 | ref(), reactive() | useState() |
| 클래스 바인딩 | :class="{ active: isActive }" | className={isActive ? 'active' : ''} |
| 계산된 속성 | computed() | useMemo() (또는 일반 변수) |
- 리액트는 "HTML처럼 보이는 자바스크립트(JSX)를 작성한다"고 생각하자
- JSX는 return( )안에 작성함
'Study > React' 카테고리의 다른 글
| [React] 환경설정 및 기본 구조 (1) | 2026.01.01 |
|---|
