본문 바로가기
프론트엔드로 가는 길/react

09. localStorage

by woody-j 2023. 2. 14.

Local Storage

크롬개발자 도구 -> Application -> Local Storage

1) 특징

  • 5MB 정도의 문자 데이터 저장 가능
  • 캐시를 삭제하지 않는 이상 영구적으로 저장
  • object 자료랑 유사하게 key/value 형태로 저장 

 

2) 문법

(1) 추가

localStorage.setItem('dataName','data')

(2) 읽기

localStorage.getItem('dataName')

(3) 삭제

localStorage.removeItem('dataName')

 

3) array/object를 바로 저장 불가능

편법으로 저장 방법

 

(1) array/object -> JSON 변환 

JSON은 문자 취급을 받는다. JSON은 따옴표친 array/object 자료이다.
localStorage.setItem('object',JSON.stringify({name:'key'}));

{name:'key'}를 JSON으로 변경했다. 어떻게 변했을까?
{name:'key'} -> "{"name":"kim"}"

 

(2) JSON -> array/object 변환 

JSON.parse() 사용
var a = localStorage.getItem('object');
var b = JSON.parse(a)

 

4) 최근 본 상품 UI 기능 만들기 

(1) detail 페이지 접속

(2) 현재 페이지 상품 id 가져오기

(3) localStorage에 watch항목에 있던 []에 추가해주기

 

 

① detail.js

useEffect(()=>{
//1. watched의 data 꺼내기
let outData=localStorage.getItem('watched')
//2. 꺼낸 데이터 object/array로 변환
outData=JSON.parse(outData)
//3. 해당 페이지 id outData에 넣기
outData.push(찾은상품.id)
//4. 꺼낸거 JSON으로 변환해서 다시 넣기
localStorage.setItem('watched',JSON.stringify(outData))
},[])

② 중복을 제거 하고 싶다면?

useEffect(()=>{
//1. watched의 data 꺼내기
let outData=localStorage.getItem('watched');
//2. 꺼낸 데이터 object/array로 변환
outData=JSON.parse(outData);
//3. 해당 페이지 id outData에 넣기
outData.push(찾은상품.id);

//--> set으로 바꿨다가 다시 array로 만들기
outData = new Set(outData);
outData = Array.from(outData);
//4. 꺼낸거 JSON으로 변환해서 다시 넣기
localStorage.setItem('watched',JSON.stringify(outData))
},[])

③ 여기서 사이트가 새로고침시 localStorage에 있던 항목도 싹 [] 로 비워지는데 막는 방법은?

product.js : 클릭할 상품 컨포넌트

  useEffect(() => {
    if (!localStorage.getItem("watched")) {
      localStorage.setItem("watched", JSON.stringify([]));
    }
    // 새로고침시 초기값으로 돌아갈땐
    // 이미 watch 항목 있으면 setItem 하지말아주세요
  });

 

'프론트엔드로 가는 길 > react' 카테고리의 다른 글

11. DatePicker  (0) 2023.04.18
10.Rechart  (0) 2023.04.17
08. react_redux  (0) 2023.01.30
07. 자연스러운 메뉴 만들기  (0) 2022.12.26
06. Ajax  (0) 2022.12.25