앱을 만들때,
무언가를 로컬로 저장하고 싶으면
간단한 경우 Async storage를 많이 이용한다.
App
┗ Home Screen
┗ Write Screen
1 2 3 4 | type RootStackParamList = { Home: undefined; Write: undefined; } | cs |
이런 구조의 앱에서 (나는 Native stack navigator를 사용했다.)
- Write Screen 에서 글을 입력한다.
- Async Storage 에 저장한다.
- Home Screen 으로 돌아간다.
- 업데이트 된 list를 보여준다.
Write에서 글을 작성하고 그걸 Async storage에 저장하는것까지 잘했지만,
Home Screen으로 돌아갔을때 다시 useEffect가 트리거 되지 않아서 고민을 많이 했다.
React Navigation에서 navigate 함수를 사용해
Home screen -> write screen으로 넘어간 경우에는
1 | navigate("Write") | cs |
Home Screen 위에 Write Screen 이 덮어지게 되고
그 후 Write Screen 에서 Home Screen으로 돌아오더라도
useEffect가 트리거되지 않는다.
결론부터 말하자면 useFocusEffect를 사용하면 된다.
Hook 이름에서 바로 알수 있지만,
해당 스크린이 Focus를 가지게 되면 트리거 된다.
(처음 띄울때 + 다른 screen 이동 후 다시 돌아올때)
해당 hook안에서 Async Storage를 load 하면 된다.
No comments:
Post a Comment