211221 리액트 네이티브, 알고리즘

211221

리액트 네이티브

네비게이션

  • 네비게이션을 위해서 @react-navigation/native 를 사용한다. 의존하는 라이브러리로 react-native-screens react-native-safe-area-context 를 설치한다.
  • 브라우저에 history 와 같은 기능을 사용하기 위해서 Native Stack Navigator 를 사용한다. 설치 @react-navigation/native-stack
  • 스크린을 사용되는 컴포넌트는 navigation을 props로 받음. navigation.navigate 나 navigation.push 로 화면 전환을 할 수 있다.
  • 마찬가지로 props로 route도 받아온다. route는 key, name, params 를 갖는다.
  • navigate 와 push 에 차이는 navigate 는 전환 화면이 현제 화면과 다르면 화면을 쌓지 않고, push 는 다른 화면을 쌓는다.
  • 뒤로가기 navigation.pop( ) 으로 하고, 가장 처음 화면으로 이동할 때에는 navigation.popToTop() 으로 이동한다.
  • 드로어 네비게이터를 사용하려면 @react-navigation/drawer react-native-gesture-handler react-native-reanimated 를 설치한다
  • Screen 이 아닌 곳에서는 React와 마찬가지로 hook을 통해 route 와 navigationd 을 가져올 수 있다. useNavigation , useRoute
  • useFocusEffect 웹과 달리 앱은 화면이 사라지는 것이 아니라 쌓게 된다. 따라서 Home 면에서 Detail 화면으로 넘어갈때 화면을 쌓일 뿐이여서 componentWillUnmount 같은 로직이 호출되지 않는다. 마찬가지로 Detail 에서 Home으로 돌아올 때도 componentDidMount 같은 로직이 호출되지 않는다. 그래서 만약 다른 화면을 봤다가 다시 돌아왔을때 어떤 작업을 하려면 useFocusEffect hook 을 사용해야 한다. → 반드시 useCallback 과 같이 사용해야 한다. 안그러면 렌더링 될때마마다 useFocusEffect 에 등록한 함수가 실행된다.

알고리즘

  • DP 와 분활정복의 차이 ?
    • 큰문제가 작은 문제로 나누어짐, 가장 큰 차이점은 부분 문제의 중복이다. DP 는 부분 문제의 중복이 존재하고, 분할정복은 그렇지 않다.