티스토리 뷰
1단계: 리액트 환경 구축 (Setting Up)
최근에는 속도가 매우 빠른 **Vite(비트)**라는 도구를 사용하는 것이 표준입니다. 터미널(CMD 또는 VS Code 터미널)을 열고 아래 순서대로 명령어를 입력해 보세요.
1. Node.js 설치 확인
먼저 Node.js 공식 사이트에서 LTS 버전을 설치해야 합니다. 설치 후 터미널에 입력하여 버전을 확인하세요.
Bash
node -v
2. 리액트 프로젝트 생성
프로젝트를 만들 폴더로 이동한 뒤 아래 명령어를 입력합니다.
Bash
# 프로젝트 생성 (my-board는 프로젝트 이름입니다)
npm create vite@latest my-board -- --template react
# 생성된 폴더로 이동
cd my-board
# 필요한 라이브러리 설치
npm install
# 개발 서버 실행
npm run dev
브라우저에 표시된 주소(예: http://localhost:5173)로 접속하면 리액트 로고가 뜨는 것을 볼 수 있습니다!
2단계: 상태 관리 useState 이해하기
환경이 준비되었다면, 리액트의 핵심인 useState를 배울 차례입니다.
useState란?
컴포넌트 내부에서 **"값이 변하면 화면을 다시 그려야 하는 데이터"**를 만들 때 사용합니다.
기본 문법
JavaScript
const [state, setState] = useState(초기값);
- state: 현재 상태 값 (읽기 전용처럼 취급)
- setState: 상태를 변경하는 함수 (이 함수를 호출해야 리액트가 화면을 다시 그림)
3단계: 실습 - "좋아요" 버튼 만들기
게시판에서 흔히 쓰이는 '좋아요' 기능을 useState로 구현해 보겠습니다. App.jsx 파일의 내용을 모두 지우고 아래 코드를 넣어보세요.
JavaScript
import { useState } from 'react' // 1. useState 불러오기
function App() {
// 2. 상태 선언: [현재값, 변경함수] = useState(초기값)
const [like, setLike] = useState(0);
const [isRed, setIsRed] = useState(false);
return (
<div style={{ padding: '20px', textAlign: 'center' }}>
<h1>상태 관리 실습</h1>
{/* 3. 상태 값 출력 */}
<p style={{ fontSize: '24px' }}>
이 게시글의 좋아요 수: <strong>{like}</strong>
</p>
{/* 4. 클릭 시 상태 변경함수 호출 */}
<button onClick={() => setLike(like + 1)}>
👍 좋아요 클릭
</button>
<button onClick={() => setIsRed(!isRed)} style={{ marginLeft: '10px' }}>
{isRed ? "검정색으로 변경" : "빨간색으로 변경"}
</button>
<div style={{
marginTop: '20px',
color: isRed ? 'red' : 'black',
fontWeight: 'bold'
}}>
상태에 따라 이 글씨의 색상이 변합니다!
</div>
</div>
)
}
export default App
💡 핵심 요약
- 반응형: like 변수를 우리가 직접 innerHTML로 넣지 않아도, setLike를 호출하는 순간 리액트가 알아서 해당 부분만 숫자를 바꿉니다.
- 데이터 기반 UI: 색상 변경 버튼을 보면, 우리는 스타일을 직접 바꾸는 게 아니라 isRed라는 상태 값만 바꿉니다. 화면은 그 상태값에 맞춰서 스스로 변합니다.
※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자바스크립트 #javascript #math
- 좋은책
- 증폭기 #아이피타임증폭기
- thymeleaf
- iptime와이파이증폭기 #와이파이증폭기설치
- 썬크림 #닥터지썬크림 #내돈내산 #내돈내산썬크림 #썬크림추천 #spf50썬크림 #닥터지메디유브이울트라선
- 와이파이증폭기추천 #와이파이설치
- lg그램pro #lg그램 #노트북 #노트북추천 #lg노트북
- 정보처리기사 #정보처리기사요약 #정보처리기사요점정리
- 탭메뉴자바스크립트
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- 쇼팬하우어 #좋은책
- 무료폰트 #무료웹폰트 #한수원한돋움 #한수원한울림 #한울림체 #한돋움체
- // 사진직: 데이터가 없으면 DEFAULT_IMG 사용 const profileSrc = (d.img && d.img !== "") ? d.img : DEFAULT_IMG;('#user-photo').attr('src'
- 테스크탑무선랜카드 #무선랜카드 #아이피타이무선랜카드 #a3000mini #무선랜카드추천
- jdk #jre
- 연명의료결정제도 #사전연명의료의향서 #사전연명의료의향서등록기관 #광주사전연명의료의향서
- 자바스크립트정규표현식
- 파비콘사이즈
- ajax
- 자바스크립트break
- 바지락칼국수 #월곡동칼국수 #칼국수맛집
- 좋은책 #밥프록터 #부의원리
- echart
- 광주분식 #광주분식맛집 #상추튀김 #상추튀김맛집 #광주상추튀김
- 자바스크립트countiue
- SQL명령어 #SQL
- sw기술자평균임금 #2025년 sw기술자 평균임금
- 파비콘 #파비콘 사이트에 적용
- css미디어쿼리 #미디어쿼리 #mediaquery
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
글 보관함

