
이 글은 2026년 3월 12일 학습한 내용을 정리한 글입니다.
CSS 프레임워크로 많이 사용되는 Bootstrap과 Tailwind의 차이를
비교해 보았다.
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.3/css/bootstrap.min.css">
<script src="https://cdn.tailwindcss.com"></script>
Tailwind의 JIT 모드는 필요한 CSS만 실시간으로 생성하는 방식이다.
이를 통해 빌드 속도가 빨라지고, 임의의 값도 바로 사용할 수 있다.
예시
<button class="hover:bg-white bg-[#999999] p-[1px_10px_5px_10px]
rounded-[15px] hover:text-black">
버튼 이름
</button>
이와 같은 방식으로 반응형 이벤트 메뉴 UI를 구현해 보았다.
Tailwind에서도 일반 CSS와 동일하게 폰트를 import 후 font-family로
적용할 수 있다.
@import url("Pretendard");
body {
font-family: "Pretendard", sans-serif;
}
React에서 상태를 저장하는 방법은 useState와 useRef가 있다.
기본 기준
또한 useRef는 DOM 직접 접근에도 사용 가능하다.
구분 useState useRef
용도 UI 상태 관리 UI에 영향 없는 값 저장
리렌더링 변경 시 리렌더링 리렌더링 없음
접근 방식 state 변수 ref.current
DOM 접근 불가능 가능
사용 예시 폼 입력값, todo 목록 타이머 ID, 포커스 제어
React에서 기본적으로 제공하는 Hook
예시
개발자가 재사용 가능한 로직을 만들기 위해 직접 만드는 Hook
특징
function useCounter() {
const [count, setCount] = useState(0);
return { count, setCount };
}
react-hooks/rules-of-hooks 규칙 적용 때문일반 함수에서는 React Hook을 사용할 수 없다.
// ❌ 일반 함수
function normalFunction() {
const [count, setCount] = useState(0); // 에러 발생
}
하지만 Custom Hook에서는 가능하다.
// ✅ Custom Hook
function useCounter() {
const [count, setCount] = useState(0);
return { count, setCount };
}
로컬 환경에서 React로 Todo List를 구현하였다.
React의 상태 관리(useState) 와 컴포넌트 구조를 직접 적용해보는
연습이 되었다.
아래 이미지는 간단한 UI 구현이다.

팀플 두 번째 모임을 진행했다.
이후 팀원들과 함께 일정 관리, 회의 기록, 규칙 등의 구조를 정리하였다.