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

Stag내용 merge #128

Closed
wants to merge 131 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
4f456d7
Merge pull request #17 from LikelionUniv/main
jinhokim98 Jan 21, 2024
8328084
test: dockerfile 테스트
jinhokim98 Jan 21, 2024
8a63924
test: dockerfile 테스트2
jinhokim98 Jan 21, 2024
87214ab
test: dockerfile 테스트3
jinhokim98 Jan 21, 2024
a4ec72d
test: dockerfile 테스트4
jinhokim98 Jan 21, 2024
d8de2ff
test: dockerfile 테스트5
jinhokim98 Jan 21, 2024
511a1c2
test: 도커파일 원복..
jinhokim98 Jan 21, 2024
188dbdb
chore: yarn 삭제
jinhokim98 Jan 21, 2024
6390c3a
Merge pull request #18 from LikelionUniv/main
jinhokim98 Jan 21, 2024
1d99d24
feat: 도커파일 수정
chan-byeong Jan 23, 2024
75770fb
fix: browserlist-db 업데이트
chan-byeong Jan 23, 2024
1f598e8
feat: CI=true -> CI=false
chan-byeong Jan 23, 2024
4ae5ef7
Merge pull request #20 from LikelionUniv/main
jinhokim98 Jan 23, 2024
3cb362a
Merge pull request #23 from LikelionUniv/main
jinhokim98 Jan 28, 2024
3bfd31e
Merge pull request #24 from LikelionUniv/main
jinhokim98 Jan 29, 2024
980e8ea
Merge pull request #26 from LikelionUniv/main
jinhokim98 Jan 30, 2024
c1548fe
Merge pull request #28 from LikelionUniv/main
jinhokim98 Jan 30, 2024
ca76f6d
Merge pull request #29 from LikelionUniv/main
jinhokim98 Jan 30, 2024
1944708
Merge pull request #30 from LikelionUniv/main
jinhokim98 Jan 30, 2024
ed2d454
Merge pull request #31 from LikelionUniv/main
jinhokim98 Jan 30, 2024
c8be175
Merge pull request #32 from LikelionUniv/main
jinhokim98 Jan 30, 2024
35d1d4c
Merge pull request #33 from LikelionUniv/main
jinhokim98 Jan 30, 2024
16891a0
Merge pull request #35 from LikelionUniv/main
jinhokim98 Jan 31, 2024
6d62237
Merge pull request #37 from LikelionUniv/main
jinhokim98 Jan 31, 2024
89ac07d
Merge pull request #38 from LikelionUniv/main
jinhokim98 Jan 31, 2024
5575c9a
Merge pull request #39 from LikelionUniv/main
jinhokim98 Jan 31, 2024
c953cd1
feat: 깃허브액션 시크릿 추가
chan-byeong Jan 31, 2024
664388d
Merge pull request #41 from LikelionUniv/main
jinhokim98 Jan 31, 2024
1829e95
Merge pull request #43 from LikelionUniv/main
jinhokim98 Jan 31, 2024
e5a3568
Merge pull request #46 from LikelionUniv/main
jinhokim98 Feb 4, 2024
cf7e4b2
Merge pull request #50 from LikelionUniv/main
jinhokim98 Feb 7, 2024
04bf28e
Merge pull request #52 from LikelionUniv/main
jinhokim98 Feb 11, 2024
7ec4016
Merge pull request #55 from LikelionUniv/main
jinhokim98 Feb 20, 2024
c12b956
Merge pull request #59 from LikelionUniv/main
jinhokim98 Feb 25, 2024
8ebb3ae
04.11 이슈 해결 적용 (#68)
teagu123 Apr 11, 2024
7b08b3c
Fix : local상태 이슈 체크
teagu123 Apr 11, 2024
5ac56f5
Feat : GA 추가
teagu123 May 12, 2024
ae8403a
Docs : readme수정 2기 버전
teagu123 May 13, 2024
9864631
Fix : 이슈 처리
teagu123 May 13, 2024
89edd3b
Merge branch 'main' into stag
teagu123 May 13, 2024
baac019
해커톤 랜딩 페이지 기본 구조도 세팅 (#76)
KimKyuHoi Jun 26, 2024
4bae3cc
해커톤 랜딩페이지 안내 컴포넌트 구현 (#77)
KimKyuHoi Jun 27, 2024
818b25d
반응형 화면 수상작 overflow 수정 (#79)
KimKyuHoi Jun 28, 2024
dde378d
feat: timer 기본 구현 완료
eastfilmm Jun 28, 2024
7dbb631
feat: timer css 적용
eastfilmm Jun 28, 2024
6af459e
feat: main info 구현
eastfilmm Jun 28, 2024
41f72f3
feat: main info 완성
eastfilmm Jun 28, 2024
d78b02b
feat: second wrapper 그라데이션 추가
eastfilmm Jun 28, 2024
c06e12b
feat: info 이미지 및 추가 이미지 추가 css 적용
eastfilmm Jun 28, 2024
3bac280
feat: 신청 버튼 navigate 처리 완료
eastfilmm Jun 28, 2024
9e5b9d4
feat: maininfo timer 완료
eastfilmm Jun 28, 2024
c3d16b5
feat: prize 구현완료 데이터 준비되면 수정 필요
eastfilmm Jun 28, 2024
8095d10
feat: prize 및 더보기 버튼 구현 완료
eastfilmm Jun 28, 2024
733c2cf
feat: prize img 추가
eastfilmm Jun 28, 2024
b8158ef
feat: 제작자 보기 footer 추가
eastfilmm Jun 28, 2024
4fc61ae
design: prize post 이미지 넘어가는 비율 조정
eastfilmm Jun 28, 2024
679a94a
design: maininfo 그라데이션 수정
eastfilmm Jun 28, 2024
3c5d9a5
remove: 주석 정리
eastfilmm Jun 28, 2024
0271f70
design: 참가 신청btn 반응형 적용
eastfilmm Jun 28, 2024
b5a4d45
design: mainInfo 반응형 적용 완료
eastfilmm Jun 28, 2024
4b56e49
design: 반응형 css 적용 완료
eastfilmm Jun 28, 2024
59de884
design: 그라데이션 설정 수정
eastfilmm Jun 29, 2024
5e802f2
해커톤 타임라인 텍스트 추가 (#82)
KimKyuHoi Jun 29, 2024
37714ac
feat: 후원사 추가
eastfilmm Jun 29, 2024
68ab66c
design: 마진 수정
eastfilmm Jun 29, 2024
c150074
Merge pull request #83 from LikelionUniv/feature/hackton-landing-timer
eastfilmm Jun 29, 2024
28f6c4b
design: 후원사 로고, 순서, url 수정 완료
eastfilmm Jun 29, 2024
febafab
Merge pull request #85 from LikelionUniv/design/hackathon-sponsor-design
eastfilmm Jun 29, 2024
98d02dd
fix: detail BTN navigate 수정
eastfilmm Jun 29, 2024
d571437
Merge pull request #87 from LikelionUniv/fix/hackathon-detailBTN
eastfilmm Jun 29, 2024
e98d4ef
관리자 페이지 반응형 작업 & 해커톤 신청 페이지 (#88)
teagu123 Jun 29, 2024
5ac4e75
Design : Landing Page Design overflow issue
teagu123 Jun 29, 2024
620fc32
Fix : admin hackathon excel download issue
teagu123 Jun 29, 2024
1f83540
Feat/issue #73 (#93)
Ivoryeee Jul 1, 2024
10517f7
Fix : 참가 수정창 issue 해결
teagu123 Jul 2, 2024
e7d9224
Fix : stag 배포 에러
teagu123 Jul 2, 2024
18b5177
Fix : local 통신 삭제
teagu123 Jul 2, 2024
fffb717
Fix : stag 서버 배포 이슈
teagu123 Jul 2, 2024
535925c
Fix : Stag 서버 배포 이슈
teagu123 Jul 2, 2024
319c05f
Fix : Stag 서버 배포 이슈
teagu123 Jul 2, 2024
177a5a3
Fix : stag 서버 배포 이슈
teagu123 Jul 2, 2024
b013c5c
Fix : stag 서버 배포 오류
teagu123 Jul 2, 2024
b7b46f9
FIX : 해커톤 신청 유무 판단 issue 수정
teagu123 Jul 2, 2024
c5cbdb8
FIX : 수정 및 신청 이슈 해결
teagu123 Jul 2, 2024
35dcec4
해커톤 수상작 이름 수정 (#95)
KimKyuHoi Jul 2, 2024
1fa248c
Feature/about page (#96)
teagu123 Jul 2, 2024
a9c1668
Fix : 신청폼 파트 선택 이슈 해결 및 console.log 제거
teagu123 Jul 2, 2024
a3890de
Fix : local 삭제
teagu123 Jul 2, 2024
6eeb7d3
Fix : 해커톤 수정폼 참가 여부 issue 수정
teagu123 Jul 2, 2024
f0c2706
Deploy : stag배포 진행
teagu123 Jul 3, 2024
1bbe030
Fix : stag 배포 이슈 해결
teagu123 Jul 3, 2024
39e0fc4
Fix : issue 해결
teagu123 Jul 3, 2024
23edb34
Fix : 해커톤 신청 이슈 수정
teagu123 Jul 3, 2024
a841eef
design: 신청하기 버튼 bold 적용
eastfilmm Jul 3, 2024
4c0beca
design:Possibility to Reality폰트 변경 완료
eastfilmm Jul 3, 2024
0102916
Fix : 해커톤 신청 로직 이슈
teagu123 Jul 3, 2024
e45c82e
Fix : 신청 성공시 modal 보여주기
teagu123 Jul 3, 2024
fa180f4
design: 더보기 왼쪽 정렬
eastfilmm Jul 3, 2024
6d482dd
design: 컴포넌트 가로 비율 조정
eastfilmm Jul 3, 2024
14126ea
fix: 신청하기 폼으로 연결되도록 수정
eastfilmm Jul 3, 2024
5c599c4
Merge pull request #98 from LikelionUniv/design/hackaton-landing-fix
eastfilmm Jul 3, 2024
46855bb
design: 반응형 일부 수정
eastfilmm Jul 3, 2024
b62cbea
fix: 해커톤 신청시 login navigate수정 완료
eastfilmm Jul 3, 2024
e08d4c5
Merge pull request #100 from LikelionUniv/fix/hackathon-loginNav-fix
eastfilmm Jul 3, 2024
0073cdd
Fix : Admin 엑셀 다운 로직 수정
teagu123 Jul 3, 2024
525f6f9
해커톤 랜딩페이지 타임라인 글자 수정 (#102)
KimKyuHoi Jul 4, 2024
e56b8d6
fix: sponsor url 및 css 수정 완료
eastfilmm Jul 4, 2024
f1d8f2d
design: 반응형 css 일부 수정
eastfilmm Jul 4, 2024
735dbf3
Merge pull request #104 from LikelionUniv/fix/hackathon-sponsorURL-fix
eastfilmm Jul 4, 2024
2639a59
design: prize 반응형 css 수정
eastfilmm Jul 4, 2024
9c5d5f4
Merge pull request #107 from LikelionUniv/design/hackathon-prize-fix
eastfilmm Jul 4, 2024
695866d
design: mainInfo 그라데이션 수정
eastfilmm Jul 4, 2024
efd09a0
Merge pull request #110 from LikelionUniv/design/hackathon-maininfo-fix
eastfilmm Jul 4, 2024
237fd74
2기 Readme 수정 및 axios issue 처리 (#70) (#111)
Ivoryeee Jul 4, 2024
cd025c7
Fix : 신청폼 issue 수정
teagu123 Jul 4, 2024
dd1e33e
Feat : google analytics 적용
teagu123 Jul 4, 2024
6b46f7b
design: 이미지 svg 로 수정완료
eastfilmm Jul 5, 2024
cd85b23
Merge pull request #113 from LikelionUniv/design/hackathon-img-fix
eastfilmm Jul 5, 2024
b4f0c42
Merge branch 'main' into stag
teagu123 Jul 5, 2024
316eafd
Fix : 학교대표 어드민 background 이슈 수정
teagu123 Jul 7, 2024
f0f5883
fix: sponsor Logo 오류 수정
eastfilmm Jul 8, 2024
bac2c25
Merge pull request #117 from LikelionUniv/fix/hackathon-sponsorLogo-fix
eastfilmm Jul 8, 2024
28e4704
design: 신청 버튼 css 수정 반영완료
eastfilmm Jul 9, 2024
5b2ddf2
design: css 수정
eastfilmm Jul 9, 2024
a155bf4
Merge pull request #119 from LikelionUniv/design/hackathon-partbtnCSS…
eastfilmm Jul 9, 2024
ec12e72
Feat : GA 코드 추가 (#120)
teagu123 Jul 12, 2024
dca2317
Feature/ga (#122)
teagu123 Jul 12, 2024
c30e2c1
07월 14일 해당 날짜 지날 시 타이머 내용 및 타이머 바뀌도록 수정 (#124)
KimKyuHoi Jul 14, 2024
abc6661
Google analytics 적용 및 어드민 검색 범위 수정 (#126)
teagu123 Jul 14, 2024
dc439a7
Fix : 검색 univ명
teagu123 Jul 14, 2024
8c5f11c
Fix : recruitUrl 오타 수정
teagu123 Oct 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 70 additions & 66 deletions docs/react-query.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,30 @@
## react query 설명

+ react query를 사용하는 이유는 isLoading, error 등등 여러 가지 편의성 기능의 제공도 있지만 가장 큰 이유는 캐싱 기능입니다.
+ 같은 정보를 여러 번 불러와 서버를 부하시키는 일을 벌리지 않기 위해서이며, 이 때문에 react-query를 활용한다고 알고 있으면 되겠습니다.
## react query 설명

- react query를 사용하는 이유는 isLoading, error 등등 여러 가지 편의성 기능의 제공도 있지만 가장 큰 이유는 캐싱 기능입니다.
- 같은 정보를 여러 번 불러와 서버를 부하시키는 일을 벌리지 않기 위해서이며, 이 때문에 react-query를 활용한다고 알고 있으면 되겠습니다.

### 초기 셋팅

```tsx
const queryClient = new QueryClient({
defaultOptions: {
queries: {
refetchOnWindowFocus: false,
staleTime: 60 * 1000,
defaultOptions: {
queries: {
refetchOnWindowFocus: false,
staleTime: 60 * 1000,
},
},
},
});

<QueryClientProvider client={queryClient}>
<App />
<ReactQueryDevtools initialIsOpen={true} />
</QueryClientProvider>
<App />
<ReactQueryDevtools initialIsOpen={true} />
</QueryClientProvider>;
```

+ queryClient를 생성한 후 디폴트 옵션으로 두 가지를 설정해줬는데 focus를 할 경우 (크롬 창 왔다갔다, f12 등) refetch 방지와 staleTime 두 가지입니다.
- queryClient를 생성한 후 디폴트 옵션으로 두 가지를 설정해줬는데 focus를 할 경우 (크롬 창 왔다갔다, f12 등) refetch 방지와 staleTime 두 가지입니다.

staleTime은 캐싱한 데이터가 유효한 시간을 말하는데, 캐싱한 데이터가 staleTime이 지나지 않았다면, fresh한 상태인 캐싱데이터이므로 굳이 서버로부터 데이터를 다시 가져오지 않아도 된다는 의미입니다.


## react-query 사용법

### get
Expand All @@ -35,35 +33,38 @@ http method에서 get은 `useQuery`훅을 사용합니다.
useQuery 훅은 기본적으로 2개의 파라미터를 필요로합니다.

1. queryKey
+ 리코일과 동일하게 중복되지 않은 고유한 키 값을 넣어줘야합니다.
+ 여기에는 파리미터의 변동 또한 반영시켜 주어야하는데 queryKey의 type은 `string[]`임을 확인할 수 있습니다.
+ 따라서 변동되는 조건들을 배열로 넣어주면 각 파라미터 별로 고유한 키를 만들 수 있게 됩니다.

```tsx
const { data } = useSuspenseQuery({
queryKey: ['donation-detail', donationHistoryId],
queryFn: fetchDonateDetail,
});
```
- 리코일과 동일하게 중복되지 않은 고유한 키 값을 넣어줘야합니다.
- 여기에는 파리미터의 변동 또한 반영시켜 주어야하는데 queryKey의 type은 `string[]`임을 확인할 수 있습니다.
- 따라서 변동되는 조건들을 배열로 넣어주면 각 파라미터 별로 고유한 키를 만들 수 있게 됩니다.

```tsx
const { data } = useSuspenseQuery({
queryKey: ['donation-detail', donationHistoryId],
queryFn: fetchDonateDetail,
});
```

2. queryFn
+ 실행할 비동기함수
+ 말 그대로 서버에서 값을 가져오는 함수입니다.
+ 여기에서 utils에 있는 request 함수를 사용하면 됩니다.

- 실행할 비동기함수
- 말 그대로 서버에서 값을 가져오는 함수입니다.
- 여기에서 utils에 있는 request 함수를 사용하면 됩니다.

3. 부가적으로...
+ select가 있는데 이는 서버에서 가져온 값을 잘라서 쓴다거나, 정렬을 한다거나하는 데이터를 가공하는 목적으로 사용할 수 있습니다.
+ 이거는 필요할 때 적절하게 사용하면 좋을 것 같습니다.

```tsx
const { data, refetch } = useQuery({
queryKey: ['search-user', keyword],
queryFn: searchUser,
select: data => data.sort(sortByPartAndName),
});
```
- select가 있는데 이는 서버에서 가져온 값을 잘라서 쓴다거나, 정렬을 한다거나하는 데이터를 가공하는 목적으로 사용할 수 있습니다.
- 이거는 필요할 때 적절하게 사용하면 좋을 것 같습니다.

+ 특수한 상황
```tsx
const { data, refetch } = useQuery({
queryKey: ['search-user', keyword],
queryFn: searchUser,
select: data => data.sort(sortByPartAndName),
});
```

- 특수한 상황

검색의 경우 이미 get을 요청한 이후 다시 get 메서드로 요청해야합니다.
이럴 때는 useQuery의 refetch 메서드를 사용합니다.
Expand All @@ -80,59 +81,62 @@ const { data, refetch } = useQuery({

### useSuspenseQuery

+ 성공한 결과만을 전달해줘서 반환이 undefined일 때를 생각하지 않아도 된다는 장점이 있습니다.
+ 이 훅을 사용하려면 Promise가 발생하는 부모의 컴포넌트에서 Suspense로 반드시 묶어줘야합니다.
+ 아마 useQuery보다 useSuspenseQuery를 더 많이 사용하게 되지 않을까 싶습니다.
- 성공한 결과만을 전달해줘서 반환이 undefined일 때를 생각하지 않아도 된다는 장점이 있습니다.
- 이 훅을 사용하려면 Promise가 발생하는 부모의 컴포넌트에서 Suspense로 반드시 묶어줘야합니다.
- 아마 useQuery보다 useSuspenseQuery를 더 많이 사용하게 되지 않을까 싶습니다.

Suspense는 자식 컴포넌트에서 프로미스를 감지하여 loading 상태일 동안 fallback props로 넘겨준 loading 화면을 보여준 뒤 완료되면 자식 컴포넌트의 결과를 보여줍니다.

isLoading을 사용할 필요가 없다는 장점이 있습니다.

```tsx
<Suspense fallback={<BoxSkeleton pageSize={pageSize} />}>
<ProjectListInner projectApi={projectApi} pageSize={pageSize} />
<ProjectListInner projectApi={projectApi} pageSize={pageSize} />
</Suspense>
```


### post, put, delete, patch

http method에서 get 이외의 메서드는 `useMutation`훅을 사용합니다.
useMutation 훅은 기본적으로 2개의 파라미터를 필요로하며, 추가로 몇 가지를 더 알아야합니다.

1. mutationKey
+ useQuery의 키와 동일합니다.

- useQuery의 키와 동일합니다.

2. mutationFn
+ 실행할 비동기함수
+ 말 그대로 서버에 값을 전달하여 서버의 데이터에 변동을 일으키는 함수입니다.
+ 여기에서 utils에 있는 request 함수를 사용하면 됩니다.

- 실행할 비동기함수
- 말 그대로 서버에 값을 전달하여 서버의 데이터에 변동을 일으키는 함수입니다.
- 여기에서 utils에 있는 request 함수를 사용하면 됩니다.

3. onSuccess
+ 요청이 성공했을 때 작동하는 함수
+ 예시에서는 patch 메서드를 사용했으며, 수정이 성공하면 수정된 데이터로 서버에서 다시 불러와야합니다.
+ 이 때 queryClient의 invalidateQueries를 사용하면 해당 키에 대한 정보가 stale 처리되어 유효하지 않은 데이터로 간주하기 때문에 서버에서 다시 불러오게 됩니다.

예시: 프로젝트 수정의 경우 프로젝트 목록과 프로젝트 디테일의 캐시를 stale 처리하여 해당 정보를 다시 불러오도록 명령
```tsx
onSuccess: data => {
queryClient.invalidateQueries({
queryKey: ['get-pagiable', { uri: '/api/v1/project/' }],
});
queryClient.invalidateQueries({
queryKey: ['project-detail', projectId],
});

alert(`${data}번의 게시글이 수정되었습니다.`);
clearUser();
navigate('/project');
},
```

- 요청이 성공했을 때 작동하는 함수
- 예시에서는 patch 메서드를 사용했으며, 수정이 성공하면 수정된 데이터로 서버에서 다시 불러와야합니다.
- 이 때 queryClient의 invalidateQueries를 사용하면 해당 키에 대한 정보가 stale 처리되어 유효하지 않은 데이터로 간주하기 때문에 서버에서 다시 불러오게 됩니다.

예시: 프로젝트 수정의 경우 프로젝트 목록과 프로젝트 디테일의 캐시를 stale 처리하여 해당 정보를 다시 불러오도록 명령

```tsx
onSuccess: data => {
queryClient.invalidateQueries({
queryKey: ['get-pagiable', { uri: '/api/v1/projects/' }],
});
queryClient.invalidateQueries({
queryKey: ['project-detail', projectId],
});

alert(`${data}번의 게시글이 수정되었습니다.`);
clearUser();
navigate('/project');
},
```

4. onError
+ 요청이 실패했을 때 작동하는 함수
+ 요청이 실패했을 때 상태를 원복시키는 작업을 수행할 수 있습니다.

- 요청이 실패했을 때 작동하는 함수
- 요청이 실패했을 때 상태를 원복시키는 작업을 수행할 수 있습니다.

## react-query 함수 저장

Expand Down
Loading
Loading