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

프론트엔드 5기 1조(김필진, 이은지, 임승이, 방미선) 토이프로젝트 #11

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

Conversation

sihyun92
Copy link

KEEP

링크 클릭
github 클릭

👩‍🚀 개발팀

Pildrum
김필진
Eunjii
이은지
Lim Seung-Yi
임승이
Bang Misun
방미선
소비내역 월별 차트
소비내역 추가, 수정, 삭제 모달, 메인화면 레이아웃
소비내역 일별, 주간, 월별 캘린더
소비내역 검색, 조회


사용기술 및 개발환경

Development



Copy link
Member

@GyoHeon GyoHeon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

총평

기능상으로 깔끔한 프로젝트입니다.
API 관련 문제는 비동기 처리로 고쳤으니 setTimeout은 전부 제거하는 걸 추천드립니다.
항상 문제는 가까이에 있지만 그래서 더 안보이는 경우가 참 많은 것 같습니다.

기능상 아쉬운 부분이 없어서 리뷰가 좀 적습니다.
변수의 이름이나 재사용성에 대한 고민을 조금 더 해보시면 좋겠고
폴더 구조나 컴포넌트 구조를 간단하게 만들어 보시면 훨씬 가독성 좋은 프로젝트가 될 것 같습니다.

수고하셨습니다!

}

function Router({ theme, setTheme }: IRouterProps) {
const isLight = theme === "light";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

애초에 state를 theme이 아니라 isLight로 설정해주거나 isLight 대신 theme을 계속 사용하는게 어떨까 싶습니다.
is~라는 변수를 선언하는 경우가 많긴 하지만, theme보다 더 시맨틱하거나 사용하기 좋진 못한 것 같아요.

import { WeeklyView } from "./WeeklyView";

function CalendarSection() {
const [toggleBtn, setToggleBtn] = useState(true);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

state 변수명이 조금 더 시맨틱 해질 수 있을 것 같습니다.
일단 toggleBtn은 특정 값이라기보단 버튼 자체를 나타내는 의미라서 아쉽습니다.
또한, 실제로 토글되는 정보가 단순 true, false가 아니니 boolean이 아니라 string을 담는 것도 좋은 선택일 것 같습니다.

<CalendarContainer>
<Calendar
value={today}
calendarType={"US"}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전달 값이 단순 string인 경우 중괄호는 필요 없습니다.

Suggested change
calendarType={"US"}
calendarType="US"

Comment on lines +52 to +71
tileContent={({ date, view }: { date: Date; view: string }) =>
view === "month" &&
Object.keys(monthlyCharge).map((a) =>
a === date.getDate().toString() ? (
<div key={a}>
{totalAmount(monthlyCharge[Number(a)])[0] !== 0 ? (
<p className="amount-text">
{totalAmount(monthlyCharge[Number(a)])[0].toLocaleString()}
</p>
) : null}
{totalAmount(monthlyCharge[Number(a)])[1] !== 0 ? (
<p className="amount-text posi">
{"+" +
totalAmount(monthlyCharge[Number(a)])[1].toLocaleString()}
</p>
) : null}
</div>
) : null,
)
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

너무 길고 복잡합니다...
return 밖에서 따로 함수로 선언해주고 props에는 함수를 전달해주는 식으로 구성하는 것이 가독성에 더 좋을 것 같습니다.

console.error(error);
}
};
setTimeout(() => fetchData(), 5);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

허허 다 빼버립시다


export function WeeklyView() {
const [thisMonthData, setThisMonthData] = useState([]);
const [today, setToday] = useRecoilState(todayAtom);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

today는 오늘이라는 뜻이니 date등의 표현이 더 적합해보입니다.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리액트에 종속되지 않는 함수들은 util function으로 따로 빼서 관리하는 것이 일반적입니다.
아래 참고 글을 보면 util function directory에 대한 설명이 나와있습니다.

참고: https://blog.webdevsimplified.com/2022-07/react-folder-structure/

Comment on lines +38 to +41
if (name === "amount") {
if (!isNaN(Number(value))) {
setEditAmount(+value);
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

중첩으로 1가지만 검사하는 것은 and와 같습니다.

Suggested change
if (name === "amount") {
if (!isNaN(Number(value))) {
setEditAmount(+value);
}
if (name === "amount" && !isNaN(Number(value))) {
setEditAmount(+value);
}

Comment on lines +42 to +50
} else if (name === "userId") {
setEditUserId(value);
} else if (name === "category") {
setEditCategory(value);
} else if (name === "date") {
setEditDateValue(value);
} else if (name === "time") {
setEditTimeValue(value);
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 else if문은 중복으로 걸릴 일이 없기 때문에 if문으로만 작성해도 됩니다.

Suggested change
} else if (name === "userId") {
setEditUserId(value);
} else if (name === "category") {
setEditCategory(value);
} else if (name === "date") {
setEditDateValue(value);
} else if (name === "time") {
setEditTimeValue(value);
}
if (name === "userId") {
setEditUserId(value);
}
if (name === "category") {
setEditCategory(value);
}
if (name === "date") {
setEditDateValue(value);
}
if (name === "time") {
setEditTimeValue(value);
}

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.

2 participants