
이 글은 2026년 3월 11일 작성된 글입니다.
오늘은 React의 State 개념, Flex 에 대해 학습하였다.
React의 state 변수는 UI와 연결된 데이터를 관리하는 변수이다.
state 값이 변경되면 관련된 UI가 자동으로 다시 렌더링된다.
즉,
상태(State)가 바뀌면 화면(UI)이 다시 그려진다.
React에서는 useState 훅을 사용해 상태를 정의한다.
const [color, setColor] = useState("black");
구조
color → 상태 변수setColor → 상태 변경 함수상태를 변경할 때는 직접 값을 수정하지 않고 setter 함수를 사용한다.
예시
<button style={{ color: color }} onClick={() => setColor("red")}>
색 변경
</button>
버튼을 클릭하면
setColor("red");
가 실행되면서 state 값이 변경되고 React가 컴포넌트를 다시 실행하여 UI가 갱신된다.
리스트 데이터를 삭제할 때는 filter()를 자주 사용한다.
const newItems = items.filter((item, i) => i !== index);
동작
filter()는 조건을 만족하는 요소만 남긴 새로운 배열을 반환리스트에서 특정 항목을 삭제할 때 사용한다.
function deleteItem(index) {
const newItems = items.filter((item, i) => i !== index);
setItems(newItems);
}
핵심
UI의 상태를 제어하기 위해 boolean 타입의 state를 사용할 수 있다.
예를 들어 isModifyingMode가 true이면 수정 UI가 보이고,
false이면 일반 화면이 보이도록 만들 수 있다.
const [isModifyingMode, setIsModifyingMode] = useState(false);
예시
{isLoggedIn && <button>로그아웃</button>}
true → 로그아웃 토글 표시false → 버튼 숨김 또는 로그인 토글 표시React에서는 && 연산자를 사용해 특정 조건에서만 UI를 렌더링하는 패턴을 자주 사용한다.
Flex는 요소들을 유연하게 배치하기 위한 CSS 레이아웃 방식이다.
기존의 float나 inline-block보다
정렬과 레이아웃을 훨씬 쉽게 만들 수 있다.
Flex 구조
.container {
display: flex;
}
Flex에는 두 개의 축이 존재한다.
정렬 기억법
justify → 메인축 정렬
align → 교차축 정렬
flex-direction: row;
row → 가로 배치 (기본값)column → 세로 배치row-reverse → 가로 역순column-reverse → 세로 역순flex-wrap: wrap;
nowrap → 줄바꿈 없음wrap → 공간 부족 시 줄바꿈justify-content: center;
주요 값
flex-startflex-endcenterspace-betweenspace-aroundspace-evenlyalign-items: center;
주요 값
stretchflex-startflex-endcenter완전 중앙 정렬
justify-content: center;
align-items: center;
flex-basis: 100px;
아이템의 기본 크기 설정
flex-grow: 1;
남는 공간을 비율로 나누어 가짐
flex: 1;
아래 속성의 축약형
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0;
align-self: center;
특정 아이템만 교차축 정렬 변경
order: 1;
숫자가 작을수록 먼저 배치
HTML 구조는 바뀌지 않고
시각적인 순서만 변경된다.
처음 만난 팀원들과 소통하며 팀명을 정하고, 간단한 아이스브레이킹을 진행했다.
이 팀원들과 멋있는 결과물을 내고 싶다.
코딩마을 방범대 화이팅 :)
React에서는 state가 UI를 제어하는 핵심 요소라는 것을 이해했다.
특히 filter()를 이용해 배열을 직접 수정하지 않고 새로운 배열을 만들어 상태를 갱신하는 방식이 인상적이었다.
또한 Flex를 통해 레이아웃과 정렬을 훨씬 직관적으로 구성할 수 있다는 것을 알게 되었다.