Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- custom printing
- vercel git lfs
- 티스토리 성능
- github pdf
- adb connect
- 이미지 데이터 타입
- adb pair
- nextjs
- Failed to compiled
- camera permission
- animation
- Git
- Can't resolve
- react-native
- github 100mb
- ELECTRON
- electron-packager
- html
- silent printing
- augmentedDevice
- Recoil
- ffi-napi
- react-native-dotenv
- rolldown
- dvh
- camera access
- device in use
- Each child in a list should have a unique "key" prop.
- github lfs
- npm package
Archives
- Today
- Total
Bleeding edge
화면 전환이 되었을 때 상태 reset 시키기 본문
이전에 리액트 네이티브에서 코드를 짜더라도 웹뷰만을 이용해서, 리액트 네이티브 네비게이션의 라이프 사이클에 대해서 제대로 이해를 못하고 있었다.
useState를 사용할 때 차이
리액트 네이티브 네비게이션 같은 경우에는, 실제로 페이지를 전환하는 것이 아닌 여러 페이지가 동시에 떠있는 상태이기 때문에 실제로 라우터의 주소가 변하고 다시 돌아오더라도 상태가 돌아오지 않는다.
useFocusEffect
위의 이미지 출처에는 다음과 같은 코드가 있다.
useFocusEffect(
useCallback(() => {
setState(defaultValue);
}, [])
);
다만, 일일이 useFocusEffect를 사용하기 보다는 커스텀 훅을 만드는 것이 좋다고 생각했다.
useCleanState
어떤 훅 이름을 사용할까 고민하다가, state라는 단어가 들어가는 것이 좋고 리셋되는 내용을 clean으로 사용하는 것이 좋다고 생각했다.(useResetableState나 useResetState는 오해의 여지가 있다고 생각해서..)
import {useFocusEffect} from '@react-navigation/native';
import {useCallback, useState} from 'react';
export const useCleanState = <S,>(
defaultValue: S,
): [S, React.Dispatch<React.SetStateAction<S>>] => {
const [state, setState] = useState<S>(defaultValue);
useFocusEffect(
useCallback(() => {
setState(defaultValue);
}, []),
);
return [state, setState];
};
'Javascript > React-Native' 카테고리의 다른 글
[링크] maven not found 해결하기 (0) | 2024.03.31 |
---|---|
안드로이드 스튜디오 무선 디버깅 적용하기 (0) | 2024.03.29 |
react-native에서 .env (환경 변수 관리하기) (0) | 2023.09.18 |
[Toy Project]React Native로 카메라 앱을 만들자 - Camera (0) | 2023.09.12 |
[링크]Android vs iOS 디자인 차이 (0) | 2023.09.05 |