• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

AsyncStorage 스토리지 사용 시 문의드립니다.

22.08.07 18:17 작성 조회수 465

0

안녕하세요.

AsyncStorage 사용 시에 데이터 신규 등록 시 궁금한 점이 있어 문의드립니다.

탭바를 사용해서 다른 페이지에서 스토리지를 사용하면 페이지 전환이 될때마다 전체 값이 삭제 되고 한 건만 등록됩니다.

setItem 시에 사용하는 key 값은 동일하게 셋팅했습니다.

로컬에 저장하는 걸로 아는데 key 값이 동일하면 전 페이지에서 가지고 있던 값을 전체 가지고 와서 다시 저장해야 하는 방식일까요?

 

확인 부탁드리겠습니다.

감사합니다.

 

답변 1

답변을 작성해보세요.

0

안녕하세요 안형규님, 

  

투투리스트에 탭 내비게이션을 추가하셨나 보네요. 

스토리지를 어떻게 사용했는지, 페이지의 useEffect에서 어떤 작업을 하고 있는지 확인해 보세요. 

만약 두 페이지 모두 setItem('todos', ...) 로 되어있으면, todos라는 key에 데이터를 덮어 쓰게 됩니다. 

같은 key로 데이터를 저장할 때는 덮어쓰지 않도록 get을 먼저 하고, 가져온 데이터를 수정한 다음 set하시기 바랍니다. 

두 페이지 모두 useEffect를 이용해서 데이터를 가져오도록 수정하고, 가져온 데이터를 수정해서 setItem에 사용하면 문제가 해결될 것으로 보입니다. 

그리고 혹시 useEffect 부분에서 데이터를 덮어쓰고 있지는 않은지 확인해 보시기 바랍니다. 

 

즐거운 하루 되세요.

감사합니다. 

 

정확한 내용은 공식 문서를 확인하시기 바랍니다. 

https://react-native-async-storage.github.io/async-storage/

 

안형규님의 프로필

안형규

질문자

2022.08.10

네 해결했습니다.

감사합니다.

 

이건 다른 질문인데 App-loading 사용하다보니 

expo-app-loading is deprecated in favor of expo-splash-screen: use SplashScreen.preventAutoHideAsync() and SplashScren.hideAsync() instead. https://docs.expo.dev/versions/latest/sdk/splash-screen/

 

이런 경고가 계속 뜨고 있더라고요.

찾고는 있는데 어떤 부분 때문에 나는걸까요?

expo-app-loading이 Deprecated 되었으니 expo-splash-screen을 사용하라는 안내 문구 입니다. 

https://docs.expo.dev/versions/latest/sdk/splash-screen/

 

expo-splash-screen을 사용해서 expo-app-loading을 이용한 것과 같은 기능을 구현할 수 있습니다.