Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 네이버 치지직
- OS
- SWIFT
- swift문법
- Swift 디자인패턴
- StateObject
- 데이터베이스 공부
- ObservedObject
- Swift 문법
- 애플 디벨로퍼 아카데미
- 데이터베이스
- 네이버 부스트캠프
- 앱 비교 프로젝트
- Swift 기능
- global soop
- 애플 디벨로퍼 아카데미 후기
- 애플 아카데미 후기
- 제앱소
- sqoop
- 소프트웨어분석및설계
- useReducer
- 애플 디벨로퍼 아카데미 21주차 회고
- 숭실대
- iOS 개발 오류
- 운영체제
- Apple Developer Academy @ POSTECH
- apple developer academy 후기
- react
- 치지직
- ObservableObject
Archives
- Today
- Total
사과하는 제라스
10장. 일정 관리 웹 애플리케이션 만들기 본문
목차
728x90
반응형
주로 쓰는 Prettier 설정
//.prettierrc
{
"singleQuote": true,
"semi": true,
"useTabs": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
}
- <form />의 요소로 onSubmit이 있음.
-> onClick으로 클릭 버튼을 둘 수도 있지만 onSubmit 이벤트의 경우 인풋에서 엔터키를 눌렀을 때도 발생하기 때문에 편리함.
- Style 공부
.TodoListItem-virtualized {
& + & {
border-top: 1px solid #dee2e6;
}
&:nth-child(even) {
background: #f8f9fa;
}
}
.TodoListItem {
padding: 1rem;
display: flex;
align-items: center;
// &:nth-child(even) {
// background: #f8f9fa;
// }
.checkbox {
cursor: pointer;
flex: 1;
display: flex;
align-items: center;
svg {
font-size: 1.5rem;
}
.text {
margin-left: 0.5rem;
flex: 1;
}
//checked가 true일 때 적용되는 style
&.checked {
svg {
color: #22b8cf;
}
.text {
color: #adb5bd;
text-decoration: line-through;
}
}
}
.remove {
display: flex;
align-items: center;
font-size: 1.5rem;
color: #ff6b6b;
cursor: pointer;
&:hover {
color: #ff8787;
}
}
// 엘리먼트 사이마다 테두리를 넣어 주는 style
& + & {
border-top: 1px solid #dee2e6;
}
}
import React from 'react';
import {
MdCheckBoxOutlineBlank,
MdCheckBox,
MdRemoveCircleOutline,
} from 'react-icons/md';
import './TodoListItem.scss';
import cn from 'classnames';
const TodoListItem = ({ todo, onRemove, onToggle, style }) => {
const { id, text, checked } = todo;
return (
<div className="TodoListItem-virtualized" style={style}>
<div className="TodoListItem">
<div
className={cn('checkbox', { checked })} -->checked가 true이면 checked 스타일이 적용됨.
onClick={() => onToggle(id)}
>
{checked ? <MdCheckBox /> : <MdCheckBoxOutlineBlank />}
<div className="text">{text}</div>
</div>
<div className="remove" onClick={() => onRemove(id)}>
<MdRemoveCircleOutline />
</div>
</div>
</div>
);
};
export default React.memo(TodoListItem);
728x90
반응형
'코테이토 동아리 > [코테이토]React 스터디 5기' 카테고리의 다른 글
12장. immer를 사용하여 더 쉽게 불변성 유지하기 (0) | 2023.02.03 |
---|---|
11장. 컴포넌트 성능 최적화 (0) | 2023.02.03 |
9장. 컴포넌트 스타일링 (0) | 2023.01.27 |
8장. Hooks (0) | 2023.01.27 |
7장. 컴포넌트의 라이프사이클 메서드 (0) | 2023.01.27 |