Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[강원대 FE_허윤수] 미션 제출합니다. #62

Open
wants to merge 86 commits into
base: main
Choose a base branch
from

Conversation

sugoring
Copy link

@sugoring sugoring commented Jun 10, 2024

[강원대 FE_허윤수]

이 애플리케이션은 사용자가 할 일을 추가, 삭제, 완료 상태로 전환할 수 있는 간단한 할 일 목록(Todo List) 관리 웹 애플리케이션입니다. 동작은 TodoMVC의 기능 동작을 참고하였습니다.

제목 없음 화면 캡처 2024-06-10 125946

과제 진행 소감

"함수(또는 메서드)가 한 가지 일만 하도록 최대한 작게 만들어라"라는 요구사항에 맞추기 위해 최대한 노력했습니다. TodoApp(src\components\TodoApp\TodoApp.jsx) 컴포넌트를 더 작은 단위로 분리하여 상태 관리를 보다 효율적으로 하려고 시도했습니다. 이를 위해 상태를 저장하는 부분을 여러 컨테이너로 분리했으나, 이 과정에서 각 컨테이너 간에 상태가 공유되지 않는 문제점이 발생했습니다. 😓

이 문제를 해결하기 위해 CONTEXT API를 사용할 수 있다는 것을 알게 되었습니다. 하지만 아직 CONTEXT API에 대한 공부가 충분히 이루어지지 않아, 이를 적용하는 데 어려움을 겪었습니다. 앞으로 고급 개념을 학습하여 더 나은 코드를 작성할 수 있도록 노력할 것입니다. 📚


저장소

저장소 URL: https://github.com/sugoring/react-todo-list-precourse.git

브랜치

  • 메인 브랜치(과제 제출): sugoring
  • 오류 수정 브랜치: fix/addTodo-function-error
  • 개발 브랜치: develop

1. 초기 개발

초기에 메인 브랜치인 sugoring에서 개발을 시작했습니다.

2. 오류 수정

개발 도중 addTodo 함수와 관련된 오류가 발생하여, 오류를 해결하기 위해 fix/addTodo-function-error 브랜치에서 수정 작업을 진행하였습니다.

3. 개발 브랜치 전환

오류 수정 후, 메인 브랜치(sugoring)로 돌아와서 오류가 해결된 상태를 반영한 뒤, 이후 개발 작업은 develop 브랜치에서 계속 진행하였습니다.

4. 과제 제출

개발 작업을 완료한 후, develop 브랜치에서 작업 내용을 sugoring 브랜치로 PR(Pull Request)하여 병합하였고, 과제를 제출하였습니다.


기본 기능

[할 일 추가 기능 구현]

  • 할 일 입력 폼 생성
    • 사용자는 Enter 키 또는 추가 버튼을 통해 새로운 할 일을 입력할 수 있습니다.
  • 할 일 데이터 유효성 검사 (빈 문자열)
    • 입력된 할 일이 빈 문자열인 경우, 경고 메시지를 표시하고 추가하지 않습니다.
  • 할 일 목록 업데이트
    • 유효한 할 일은 목록에 추가되고 화면에 반영됩니다.

[할 일 삭제 기능 구현]

  • 삭제 요청 인터페이스 생성
    • 각 할 일 항목 옆에 삭제 버튼이 있습니다.
  • 삭제 요청 처리
    • 사용자가 삭제 버튼을 클릭하면 해당 할 일이 목록에서 제거됩니다.

[할 일 목록 보기 기능 구현]

  • 목록 불러오기
    • 할 일 목록을 불러옵니다.
  • 목록 표시
    • 불러온 할 일 목록을 화면에 표시합니다.

[할 일 완료 상태 전환 기능 구현]

  • 완료 상태 전환 인터페이스 생성
    • 각 할 일 항목 옆에 완료/미완료 버튼이 있습니다.
  • 상태 전환 요청 처리
    • 사용자가 완료/미완료 버튼을 클릭하면 해당 할 일의 완료 상태가 토글됩니다.

선택 요구 사항

[할 일 필터링]

  • 필터링 버튼 추가
    • 할 일 목록 상단에 '전체', '진행 중', '완료' 버튼을 추가합니다.
  • 필터링 기능 구현
    • 사용자는 이 버튼들을 클릭하여 필터링할 수 있습니다.
  • 실시간 필터링 반영
    • 필터링된 목록이 화면에 반영됩니다.

[해야 할 일의 총 개수 확인]

  • 총 개수 표시 영역 추가
    • 할 일 목록 하단에 남아있는 할 일의 총 개수를 표시합니다.
  • 개별 개수 표시 옵션
    • 완료된 할 일과 미완료된 할 일의 개수를 각각 표시합니다.

[데이터 지속성]

  • 데이터 저장 기능 구현
    • 새로고침을 하여도 이전에 작성한 데이터는 유지됩니다.

yuni added 30 commits June 8, 2024 15:46
- 문서 언어를 한국어로 설정 (lang="ko")
- 페이지 제목 설정 ([강원대 FE_허윤수])
- JavaScript 모듈 (/src/App.js) 로드
- React.createElement를 사용하여 App.js에서 Main 컴포넌트 렌더링
- ReactDOM.createRoot로 루트 div에 Main 컴포넌트 렌더링
- 할 일 입력 폼 추가
- 할 일 목록 표시를 위한 기본 UI 구성
- 각 할 일 항목에 완료 및 삭제 버튼 추가
- TodoForm 컴포넌트 생성
- Main 컴포넌트에서 TodoForm 컴포넌트 사용
- TodoForm, TodoItem, TodoList 컴포넌트 생성 및 분리
- 유틸리티 함수들을 각각의 파일로 분리하여 todoUtils 폴더에 저장
- handleInputChange, handleSubmit, validateTodo, addTodo, toggleComplete, deleteTodo 함수를 각각의 파일로 분리
- TodoForm 컴포넌트에서 handleInputChange 및 handleSubmit 함수 사용
- useTodos 훅으로 분리
- 할 일 목록을 필터링할 수 있는 '전체', '진행 중', '완료' 버튼 추가
- 필터링 상태를 관리하는 로직을 useTodos 훅에 추가
- 필터 상수를 filters.js 파일로 분리
- 핸들러 함수를 todoHandlers.js 파일로 분리
- 상태 관리 로직을 useTodosState 훅으로 분리
- 필터링 로직을 useFilteredTodos 훅으로 분리
- if 문을 switch 문으로 변경하여 가독성 향상
- 함수 네이밍을 간결하고 일관되게 변경 (addTodo, toggleComplete, deleteTodo, setFilter)
- 함수에 주석을 추가하여 목적과 매개변수, 반환값 설명
- 함수에 주석을 추가하여 목적과 매개변수, 반환값 설명
- 함수에 주석을 추가하여 목적과 매개변수 설명
- 매개변수 이름을 명확하게 변경 (event, todoText, resetInput)
- 함수에 주석을 추가하여 목적과 매개변수 설명
- 매개변수 이름을 명확하게 변경 (event)
- 함수에 주석을 추가하여 목적과 매개변수, 반환값 설명
- 함수에 주석을 추가하여 목적과 매개변수, 반환값 설명
yuni added 28 commits June 10, 2024 00:37
- 필터링된 할 일 목록 상태 관리를 위한 useFilteredTodosState 훅 추가 (hooks/useFilteredTodosState.js)
- 최종 훅 useTodoStateManager에서 필터링된 할 일 목록 상태 훅을 결합하여 반환하도록 변경 (hooks/useTodoStateManager.js)
- 필터링 로직을 관리하는 filterTodos 함수 추가 (todoUtils/filterTodos.js)
- 전체 필터 버튼을 AllFilterButton 컴포넌트로 분리 (components/TodoFilter/AllFilterButton.jsx)
- 진행 중 필터 버튼을 ActiveFilterButton 컴포넌트로 분리 (components/TodoFilter/ActiveFilterButton.jsx)
- 완료 필터 버튼을 CompletedFilterButton 컴포넌트로 분리 (components/TodoFilter/CompletedFilterButton.jsx)
- 입력 필드 상태를 관리하는 TodoInput 컴포넌트 추가
- 할 일 텍스트와 완료 상태를 렌더링하는 TodoText 컴포넌트 추가
- 완료 상태를 토글하는 ToggleCompleteButton 컴포넌트 추가
- 할 일을 삭제하는 DeleteButton 컴포넌트 추가
- 총 할 일 개수를 계산하고 렌더링하는 TotalTodos 컴포넌트 추가
- 완료된 할 일의 개수를 계산하고 렌더링하는 CompletedTodos 컴포넌트 추가
- 진행 중인 할 일의 개수를 계산하고 렌더링하는 ActiveTodos 컴포넌트 추가
- 카멜케이스로 파일명 통일을 위한 준비 작업
- 기존 src 모든 파일 삭제
- 프로젝트 설명, 진행 소감, 저장소 구조, 기본 및 선택 기능
- 애플리케이션 초기화 시 로컬 스토리지에 저장된 할 일 목록을 불러옵니다.
- 할 일 목록이 변경될 때마다 로컬 스토리지에 현재 할 일 목록을 저장합니다.
- 애플리케이션 초기화 시 로컬 스토리지에 저장된 필터 상태를 불러옵니다.
- 필터 상태가 변경될 때마다 로컬 스토리지에 현재 필터 상태를 저장합니다.
- 모든 컴포넌트에 공통된 스타일링 적용
Merge branch 'sugoring' of https://github.com/sugoring/react-todo-list-precourse into develop

# Conflicts:
#	src/components/TodoForm.jsx
@sugoring sugoring changed the title [강원대 트랙_본명] 미션 제출합니다. [강원대 FE_허윤수] 미션 제출합니다. Jun 10, 2024
develop 브랜치에서 sugoring 브랜치로 병합
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant