반응형
리액트로 메뉴 버튼들을 만드는 중이다. 버튼을 클릭하면 클릭한 버튼의 색이 변하게 만들고 싶다.
자 그럼 지금 만들러 가보자.
결과 화면 미리보기
[메뉴 1] 을 클릭하면 그 버튼이 파란색이 되고, [메뉴 2]를 클릭하면 마찬가지로 해당 버튼의 색이 변한다.
React(54) 타입스크립트 - 메뉴 버튼 클릭시 버튼 색상 변경하기
먼저 useState 를 이용하여 버튼의 색상을 변경해볼 것이다.
토글 버튼일 때는 boolean값을 주어서 스위치처럼 이용했었지만,
메뉴 버튼은 스위치 개념이 아니라 boolean 대신 분기를 쳐줄 string 값을 넣어 줄 것이다.
TabComponent.tsx
const [tab, setTab] = useState<string>('curr');
<div
className={`btn ${tab === 'curr' ? 'active' : ''}`} // tab 값이 'curr' 이면 active 클래스를 추가
onClick={() => setDealTab('curr')} // 클릭했을 때 tab 값이 'curr'로 변경된다.
>
메뉴 1
</div>
<div
className={`-btn ${tab === 'prev' ? 'active' : ''}`} // tab 값이 'prev' 이면 active 클래스를 추가
onClick={() => setDealTab('prev')} // 클릭했을 때 tab 값이 'prev'로 변경된다.
>
메뉴 2
</div>
CSS
.btn {
background-color: #fff;
border: 1px solid #dbdee2;
color: #404a5c;
}
.btn.active {
background-color: #505bf0;
color: #fff;
}
반응형
'React' 카테고리의 다른 글
Styled-components(2) global 스타일 세팅하기 (0) | 2022.01.04 |
---|---|
React(55) 겹친 영역에서 자식 이벤트만 발생시키기 (이벤트 버블링) (0) | 2022.01.03 |
React(53) 타입스크립트 - 체크박스 약관 선택 이벤트 / 자식에서 부모로 데이터 보내기 (0) | 2021.11.16 |
React(52) 타입스크립트 - 라우터 없이 메뉴 클릭 시 컴포넌트 내용 변경하기 (0) | 2021.11.01 |
React(51) 체크박스 에러 You provided a 'checked' prop to a form field without an 'onChange' handler (0) | 2021.10.18 |
댓글