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;
}
android/gradle.properties 파일 하단에
AsyncStorage_db_size_in_MB=10
추가
AsyncStorage에서 다루는 데이터의 규모가 커지면 성능이 떨어진다