이번 실습에서는 ChatGPT와의 연동 없이 React만으로 챗봇 UI의 기본 구조를 만들어봅니다.
사용자 입력, 메시지 출력, 전송 버튼까지 포함된 구조를 직접 구성해보며 챗봇의 뼈대를 완성합니다.
용어 설명
- 컴포넌트(Component): UI를 구성하는 독립적인 React 단위
- useState: React에서 상태(입력값, 메시지 목록 등)를 관리하는 훅
- 이벤트 처리: 버튼 클릭, 입력 등 사용자 동작에 반응하는 기능
기본 개념
- 챗봇 인터페이스는 ① 메시지 목록 출력 영역, ② 입력창, ③ 전송 버튼으로 구성됩니다.
- 상태(state)를 이용해 입력값과 메시지를 관리합니다.
- 아직 ChatGPT API는 연결하지 않으며, 사용자 메시지만 출력합니다.
주요 사용 위치/상황
- 챗봇 프로젝트 UI 설계 초기 단계
- 메시지 전송 흐름 구현 전 프론트엔드 틀 잡기
- 상태관리 및 이벤트 처리 연습 예제로도 활용 가능
구체적 코드 예시
// src/components/ChatBot.jsx
import { useState } from 'react';
export default function ChatBot() {
const [input, setInput] = useState('');
const [messages, setMessages] = useState([]);
const handleSend = () => {
if (!input.trim()) return;
setMessages([...messages, { role: 'user', content: input }]);
setInput('');
};
return (
<div>
<div style={{ height: '300px', overflowY: 'auto', border: '1px solid #ccc', padding: '10px' }}>
{messages.map((msg, idx) => (
<p key={idx}><strong>{msg.role}:</strong> {msg.content}</p>
))}
</div>
<input
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder="메시지를 입력하세요"
/>
<button onClick={handleSend}>전송</button>
</div>
);
}
// src/App.jsx
import ChatBot from './components/ChatBot';
function App() {
return (
<div>
<h1>💬 나만의 챗봇</h1>
<ChatBot />
</div>
);
}
export default App;
단계 요약
- useState로 입력값과 메시지 상태 구성
- 버튼 클릭 시 메시지 추가 및 입력값 초기화
- 리스트 렌더링으로 대화 UI 구성
코드 컴포넌트는 2개면 충분한가?
코드 컴포넌트를 2개로 구성하는 것이 가장 효율적입니다.
구성 설명
- ChatBot.jsx
- 챗봇의 핵심 로직이 들어 있는 컴포넌트
- 입력창, 메시지 리스트, 전송 버튼 등 상태 관리와 이벤트 처리 포함
- App.jsx
- ChatBot 컴포넌트를 불러와 렌더링하는 기본 진입점
- 구조가 단순하여 전체 흐름을 한눈에 이해 가능
2개만으로 충분한 이유
- 학습자가 가장 궁금해하는 “입력 → 출력 → 상태 처리”를 ChatBot.jsx 하나로 충분히 전달 가능
- App.jsx는 진입점 역할만 하므로 코드 설명을 최소화해도 이해에 문제 없음
- 컴포넌트를 지나치게 분리하면 오히려 초보자에게는 진입 장벽이 될 수 있음
- 복잡한 구조 분리는 이후 단계(4강 이후)에 도입하는 것이 자연스럽고 학습 부담이 적음
확장 시점은 언제?
- API 연동, 보안 처리, 상태 관리 등 기능이 추가되는 4강 이후부터 컴포넌트/디렉토리 분리 도입
- 이 시점부터 components, services, contexts, pages 등의 구조로 확장 가능
단계 요약
- 챗봇 UI 설계 초기에는 ChatBot.jsx, App.jsx 두 개만으로 충분
- 학습 집중도, 실습 흡수력, 코드 가독성 측면에서 최적
- 이후 단계에서 점진적으로 구조 확장
💬 댓글
이번 글이 도움이 되었길 바랍니다. 궁금한 점이나 요청이 있다면 언제든 댓글로 남겨주세요. 댓글은 저에게 큰 힘이 됩니다. 다음 글도 기대해주세요.
'프론트엔드 개발 실무 > React 기초부터 프로젝트까지' 카테고리의 다른 글
[ChatGPT 챗봇 실습 4강] 백엔드 프록시 구성 – API 키 보안 처리 (0) | 2025.06.13 |
---|---|
[ChatGPT 챗봇 실습 3강] ChatGPT API 연동 – 사용자 메시지에 AI 응답 받기 (0) | 2025.06.13 |
[ChatGPT 챗봇 실습 1강] ChatGPT API란? 개념과 호출 흐름 이해 (0) | 2025.06.13 |
[ChatGPT API로 프론트엔드 챗봇 만들기] - 강의안 (0) | 2025.06.13 |
React 필수 용어 총정리 (2) | 2025.06.09 |