티스토리 뷰
프로젝트 배포에 들어가기 전에,
최종테스트를 하며 질문의 view 숫자가 미친듯이 올라가는 것을 발견했다.
API를 통해서 question의 정보를 받아올 때마다, 질문의 viewCount가 증가하는 구조인데
질문 수정, 타임라인 페이지를 이동한 때마다, API를 통해서 question의 정보를 받아오기 때문에 view의 속도가 빠르게 증가하였다.
Question 페이지와 editQuestion, Timeline 페이지는 별개의 페이지이기 때문에,
props로 정보를 전달하지 못하여 그냥 서버에서 정보를 받아오는 식으로 해결하였다.
서버의 정보를 받는대신, 기존의 방식을 활용하는 방법은 내 생각으로는 2가지가 있었다.
1. 전역 상태 관리
2. Link태그로 props 전달하기
1번의 방식을 사용하는 것이 더 좋을 것 같다고 생각했지만, 당장 배포를 앞두고 있어 적용하기 어려운 상태이고
관리해주어야할 전역 상태들이 너무 많아질 것 같아서
직관적으로 전달할 수 있는 2번 방식을 선택하였다.
Link태그로 props 전달하는 것을 생각도 해본적이 없어서 무작정 검색을 통하여 방법을 찾았다.
해결
<li>
<Link
to={`/timeline/${targetId}/${
mode === 'question' ? 0 : data.answerId
}`}
state={data}
>
<AiOutlineFieldTime className="timeline__icon" />
</Link>
<Tooltip>Show activity on this post.</Tooltip>
</li>
Link 태그 안에서 state = {주고 싶은 정보}를 넣어주고
useLocation()을 이용하여 Link태그로 전달한 state를 받아올 수 있었다.
import { useLocation } from 'react-router-dom';
const location = useLocation();
// Link로 받은 상태 저장
useEffect(() => {
if (Number(answerId) > 0) {
setAnswer(location.state);
} else {
setQuestion(location.state);
}
}, []);
코드를 수정하면서, 불필요하게 서버 통신을 남발하고 있다는 거를 깨달았고, view 값 또한 더 이상 증가하지 않았다.
문제를 해결하기 위해서는 다양한 방법이 존재하는 것을 느꼈다.
https://v5.reactrouter.com/web/api/Hooks/uselocation
'프로젝트 > 스택오버플로우' 카테고리의 다른 글
오류일지 - Eslint와 onClick (0) | 2023.04.21 |
---|---|
프리프로젝트 - 질문 상세 페이지 기능 구현 (0) | 2023.04.20 |
프리프로젝트 -화면 정의서 제작 (0) | 2023.04.16 |
프리프로젝트 - UI 컨셉 정하기 (0) | 2023.04.14 |
- Total
- Today
- Yesterday
- 코드스테이츠
- 프리프로젝트
- SEB43
- BFS
- 백준
- SEB 43기
- 다이나믹 프로그래밍
- 프론트엔드
- 기술면접
- 개인 프로젝트
- SEB 43
- 인적성
- SEB43기
- 감정일기장
- Redux
- 회고
- dictionary
- 그리디 알고리즘
- React quill
- useContext
- 스택오버플로우
- Python
- 프로그래머스
- 감정 일기장
- til
- 코테
- 프로젝트
- seb
- dfs
- 브루드포스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |