const creatRandomUserData = (numPeople) => {
const MockData = Array(numPeople)
.fill(0)
.map((_, idx) => {
return {
id: idx,
name: creatRandomUserName(),
birth: creatRandomUserBirth(),
phone: creatRandomPhone(),
loginRecords: creatRandomLastLoginRecords(),
}
})
return MockData
const mockData = creatRandomUserData(270)
mockData를 다음과 같은 형태로 불러왔더니 state의 변화에 따라 rerender가 일어나고 기존의 mockData가아닌 새로운 데이터를 생성하는 문제가 발생했다.
처음 불러온 mockData를 web-stroage에 저장해서 저장된데이터를 불러와 사용하면 데이터가 유지되지 않을까?? 라는 생각에 web-storage에대한 searching을 진행했다.
web-storage를 살펴보니 두가지 저장 공간이있는데 차이점과 공통점을 살펴보자.
오리진 이란?
- URL 체계 (http,https)
- 호스트 (naver.com) 등의 도메인
- 포트 (5173 등등)
여기까지 web-storage에대해 알아본 결과 현재 issue가생겼던 부분에 사용하는 것은 적합하지 않다고 판단이 들었다... 그렇다면 어디에 사용하면 좋을까라는 생각이든다.
👍이를 알아보기 위해 다음과같은 블로그 글을 참고해서 알아봤다.
1 .sesstionStorage를 활용해서 사용자가 '입력폼'을 입력하다가 페이지에서 벗어난 경우 백업/복구
2. 글쓰기를 하다가 사용자가 창을 벗어난 경우 관련 작성하던 내용 백업/복구용
3. 웹서버에 필수적으로 접근해야 하는 캐쉬용(캐쉬로 먼저 서비스 제공, 차후에 업데이트)
4.웹페이지의 개인화 설정들에 대한 저장과 제공(캐쉬로 활용)
5.현재 읽은 글의 히스토리 저장(카운팅, 읽은글 표시 등으로 활용)
6.Canvas나 이미지에 대한 임시 저장 기능(base64로 변환)
7.웹페이지간 정보 전달(웹서버를 경유하지 않고 정보 로컬에 유지)
출처: https://ktko.tistory.com/entry/HTML-웹-스토리지-기능과-예제-그리고-활용-방법 [KTKO 개발 블로그와 여행 일기]
다음과 같은 부분에 자주 사용된다고 한다... 아마도 사용자의 기록들을 저장해
서비스이용에 편리성을 주는 용도로 사용되는 것이 아닐까 라는 생각이든다. 이부분 에대해서는 추후에 적용해보며 공부하도록 해야겠다.
아직 초보 front-end개발자인 나에겐 바로떠오르지 않았지만
issue를 해결하기 위해선 useMemo를 사용하면 간단하게 해결될 문제였다.
const mockData = useMemo(() => creatRandomUserData(270), [])
다음과 같은 방식으로 mockData를 할당해 준다면 state의 변화에도 이전과 같은 data를 유지할 수 있다.
front-end개발자의 역할은 client측과 surver를 이어주는 것....!
추후에 서버에서 데이터가 넘어올 것을 생각하고 과제를 진행해야 하겠지만 서버측에서 데이터를 정리해서 보내줄 것인데 front-end측에서 storage에 저장해서 과제를 이어나가는 것은 over-engineering이라고 스승님께서 조언해 주셔서 다시 생각해봤다.
과제를 해결해나가는데 있어서는 storage에대한 내용은 아무연관이 없었지만
어떻게 해결해 나가는 방법이 좋은 것 일까에대한 생각을 해볼 수 있는 좋은 시간이었다.
지금당장 적용하지 못하는 내용이지만 추후에 꼭 다루어야 할 내용인거 같아서 동료들과 내용을 공유하고 싶어서 posting했다. 다들 화이팅!