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

리뷰용 pr입니다. #64

Draft
wants to merge 177 commits into
base: review-base
Choose a base branch
from
Draft

리뷰용 pr입니다. #64

wants to merge 177 commits into from

Conversation

dladncks1217
Copy link

🪄 목적

관련 이슈 : #



💻 상세 작업 내용

이번 PR에서 작업한 내용을 간략히 설명해주세요.



📸 스크린샷



👼🏻 리뷰 요구사항 (선택)

리뷰어가 특별히 봐줬으면 하는 부분이 있다면 작성해주세요.

sinamong0620 and others added 30 commits July 19, 2024 04:00
sinamong0620 and others added 25 commits September 11, 2024 15:50
#42 style : 작성자 profile 이미지 추가
#25 feat: 개인 대시보드 휴지통 css
마이페이지 이용시 팀대시보드 생성 오류 수정
팀 대시보드 팀원 초대 및 탈퇴
@dladncks1217 dladncks1217 self-assigned this Sep 15, 2024
Comment on lines +14 to +22
"@testing-library/jest-dom": "^6.4.8",
"@testing-library/react": "^13.0.0",
"@testing-library/user-event": "^13.2.1",
"@types/jest": "^27.0.1",
"@types/jest": "^29.5.12",
"@types/node": "^16.7.13",
"@types/react": "^18.0.0",
"@types/react-dom": "^18.0.0",
"@types/react-modal": "^3.16.3",
"@types/styled-components": "^5.1.34",
Copy link
Author

Choose a reason for hiding this comment

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

dependency와 devDependency에 대한 학습이 필요해보여요!
testing-library같은 의존성이나, @types같은 친구들이 dependencies에 들어간 이유가 있을까요!?
한번 알아보는거 추천드립니당

Comment on lines 48 to +52
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
"eject": "react-scripts eject",
Copy link
Author

Choose a reason for hiding this comment

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

프로젝트를 CRA로 만드신것같네용
그런데 CRA는 작년에 deprecated됐습니다🥲 (facebook/create-react-app#13072)

일단 플젝 진행중이긴 하니 마이그레이션이 필수는 아니지만, 나중에 시간 여유 생기면 webpack같은 번들러로 프로젝트 세팅 직접 해보시는거 추천드릴게요!
번들러 관련 개념은 아주아주아주아주 중요한지라 나중에라도 학습해보시는거 강하게 추천드립니다.

그게 아니라 cra처럼 가볍게 프로젝트 세팅이 필요한 상황이라면, create vite를 사용하는걸 추천드려요!

Route,
Navigate,
} from 'react-router-dom';
import MainPage from './pages/MainPage';
Copy link
Author

Choose a reason for hiding this comment

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

절대경로 사용은 어떤가요!?
세팅하다보면 자연스럽게 tsconfig관련 세팅 알아보게 되고,
번들링시에 오류날거라 tsc-alias가 왜필요한지도 알아보게될거라 나중에 시간나면 시도해보시는거 추천드립니당


// 로그인 상태를 체크하는 함수
const useAuth = () => {
const [isLoggedIn, setIsLoggedIn] = useState<boolean>(false);
Copy link
Author

Choose a reason for hiding this comment

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

initial값이 false라 boolean이 자동으로 타입추론 될거에요!
은 굳이 안써도될듯합니당

const [loading, setLoading] = useState<boolean>(true); // 로딩 상태 추가

useEffect(() => {
const refreshToken = localStorage.getItem('refreshToken');
Copy link
Author

Choose a reason for hiding this comment

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

백엔드에도 같이 질문하고싶은 내용인데, refreshToken을 로컬스토리지에서 관리하는 이유가 있나요!?
그리고 로직이 뭔가 이상해서 로컬스토리지에 refreshToken이라는 이름으로 직접 집어넣어봤는데
이렇게 뚫려버리는 이슈가 있네요! 확인 한번 해보셔야할것같아용

스크린샷 2024-09-16 오후 6 16 43

Comment on lines +159 to +175
cy="0"
r="1"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(278.5 543.5) rotate(90) scale(278.5)"
>
<stop stopColor="#00D1FF" />
<stop offset="1" stopColor="#00D1FF" stopOpacity="0" />
</radialGradient>
</defs>
</svg>
</div>

<div
className="loginBox"
data-aos="fade-right"
data-aos-duration="2000"
data-aos-easing="ease-out-cubic"
Copy link
Author

Choose a reason for hiding this comment

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

오우 이렇게 보니 svg 분리가 꼭 필요해보이긴 하네요...
svg들 별도로 묶어놓고 타입 못찾는다하면

declare module '*.svg' {
  import type React from 'react';

  const SVG: React.FC<React.SVGProps<SVGSVGElement>>;
  export default SVG;
}

추가해주고

읽는거자체가 터지면 @svgr같은거 세팅해서 할 수 있을거에요

list: StatusPersonalBlock['blockListResDto'];
pageInfo?: StatusPersonalBlock['pageInfoResDto'];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
component?: React.ComponentType<any>;
Copy link
Author

Choose a reason for hiding this comment

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

음... 이렇게 들어가야 하는 상황이면 뭔가 컴포넌트 설계가 잘못된것같은데, 나중에 차차 봐야 알것같네요 이 부분은 ㅜ

Comment on lines +129 to +163
done: {
...prevColumns.done,
list: [],
pageInfo: { currentPage: 0, totalPages: 1, totalItems: 1 },
},
delete: {
...prevColumns.delete,
list: prevColumns.delete.list, // 휴지통 리스트 유지
pageInfo: prevColumns.delete.pageInfo, // 휴지통 페이지 정보 유지
},
}));

fetchData(0);
fetchDashboardData();
}, [location.pathname, fetchData]);

// 페이지가 변경될 때 데이터를 다시 가져옴
useEffect(() => {
if (page > 0) {
fetchData(page);
}
}, [page, fetchData]);

useEffect(() => {
fetchBlockData(0); // 페이지가 로드될 때 처음으로 데이터를 불러옵니다.
}, [dashboardId]);

// fetchTrigger 상태가 변경되면 데이터를 다시 불러옴
useEffect(() => {
fetchBlockData(0); // 트리거가 변경되면 다시 데이터 호출
}, [fetchTrigger]);
// 블록 순서 변경 디바운스 처리
const debouncedData = useDebounce(columns, 10);

useEffect(() => {
Copy link
Author

Choose a reason for hiding this comment

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

메인페이지긴 하지만 컴포넌트가 아는 정보가 너무 많은것 같아요.
컴포넌트는 가장 추상화된 레이어로서, 최대한 UI로직만 담을 수 있도록 설계되어야한다고 생각해요!
이렇게 컴포넌트가 알아야하는 정보가 너무 많아진다거나, 비대해진다면 커스텀훅으로 분리해보는건 어떨까 싶네요!


console.log('전달받은 카테고리', categories);

const toggleFunc = (event: React.MouseEvent) => {
Copy link
Author

Choose a reason for hiding this comment

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

React 말고 MouseEvent만 import해도 될거같아요.
event: MouseEvent<HTMLImageElement>이런식으로요!

Copy link
Author

Choose a reason for hiding this comment

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

네이밍도 handleClickToggle과 같은 형태가 좋지 않을까 싶네용

import { useAtom } from 'jotai';

const TeamFileBoard = () => {
const [visibleValue, _] = useAtom(visibleAtom);
Copy link
Author

Choose a reason for hiding this comment

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

뒤 _는 없어도 될거같아요

@dladncks1217
Copy link
Author

@MyungJiwoo @sinamong0620
개발자 등록이 안되어있어 서비스를 써볼 수 없는지라...
서비스 이해를 완전히는 못했고, 딱 코드만 보고 스타일적인 부분 등에서 가볍게 리뷰 남겨봤습니다
그냥 가볍게 제 생각들 담아본거니, 무조건 저게 정답이라 생각하지 말고 각 코멘트들에 대해 한번 고민해보시면 좋을 것 같아요!

@MyungJiwoo
Copy link
Collaborator

MyungJiwoo commented Sep 16, 2024

하나씩 다 읽어보면서 뜨끔했던 부분이 많았지만 그만큼 부족한 부분이 어딘지 알게 되었습니다. ㅎㅎ... 아직 댓글을 못 단 리뷰는 더 알아보려고 보류한 부분인데, 시간이 조금 걸리더라도 하나씩 다 공부해보고 다시 댓글 남겨보도록 하겠습니다! 코드 리뷰해주셔서 감사합니다! 🥹

@dladncks1217
Copy link
Author

@MyungJiwoo
넹넹 일단 편하게 보시고 시간남을때 차차 고민해보세요! 궁금한거있으면 질문남겨주시고요.
리뷰 이후에 바꾸고싶은 코드가 이것저것 많을 수도 있는데, 꼭 코드 리팩토링이 우선순위가 되어야하는건 아니니 부담갖지는 않았으면 좋겠네요.

어차피 좋은 코드라는것도 서비스를 견고하게, 더 잘 만들어나가기 위해 필요한거고, 당장 서비스가 동작하지 않는거면 아무짝에도 쓸모없는거라서요... 기존 프로젝트 팀원들이랑 정해뒀던 대로 기능 구현 일정은 맞추되, 남는 시간에 리팩토링해나가는게 좋을 것 같습니다.

그리고 "좋은 코드" 라는건 워딩에서도 알 수 있겠지만 주관적인 본인의 생각이 들어갈 수밖에 없는 것이라, 정답이 없는 문제이긴 합니다. 코드 스타일에 관한 리뷰같은건 꼭 정답이라고 받아들이고 반드시 반영해야겠다는 생각은 안해도 돼요! 그냥 제 생각에는 어떻더라~ 하는 하나의 의견일 뿐이니까요 ㅎㅎ

읽어보시면 좋을 것 같은 아티클 하나 남겨드릴게요. 시간 남으면 한번 읽어보세요~
https://kciter.so/posts/what-is-beautiful-code/

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.

3 participants