study: 리네다기 | 4장 - AsyncStorage

Lumpen·2023년 4월 12일
0

Study

목록 보기
52/92

AsyncStorage 는 브라우저의 localStorage 와 비슷한 리액트 네이티브 저장소
iOS 에서는 네이티브 코드로 Android 에서는 네이티브 코드와 SQLiter 를 기반으로
구현되어 있다

react-native 빌트인에서 제거되어 서드 파티 라이브러리를 이용해야 한다

AsyncStorage 는 설정이 간편하고 사용도 쉽다
하지만 데이터의 규모가 커지면 성능이 떨어진다
문자열 타입으로만 저장할 수 있어 데이터가 많아질수록 성능이 저하되고 검색, 정렬 기능이 지원되지 않는다

데이터의 규모가 커졌을 때는 realm, react-native-sqlite-storage 등이 대안이다

안드로이드는 이미 SQLite 로 저장소가 구현되어 있지만 react-native-sqlite-storage 를 사용하면 인덱싱 기능, 데이터 저장 방식, 조회 기능을 추가적으로 지원받을 수 있다

AsyncStorage 의 차이점은 비동기로 동작하고
Promise 를 반환한다는 점이 다르다

객체나 배열을 저장하려면 JSON.stringify 로 직렬화를 해줘야 함
객체나 배열을 불러오려면 JSON.parse 로 역직렬화를 한다

Promise 작성 예제

function double(number) {
  const promise = new Promise((resolve, reject) => {
    setTimeout(() => {
      if (typeof number !== 'number') {
        reject(new Error('Parameter is not a valid,'))
        return;
      }
      const result = number * 2;
      console.log(`${number} * 2 = ${result}`);
      resolve(result);
    }, 500)
  })
  return promise;
}

안드로이드에서 AsyncStorage 최대 용량 설정하기

android/gradle.properties 파일 하단에

AsyncStorage_db_size_in_MB=10 추가

AsyncStorage에서 다루는 데이터의 규모가 커지면 성능이 떨어진다

profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글