5.4.1 useNavigation

    useNavigation Hook을 사용하면 Screen으로 사용되고 있지 않은 컴포넌트에서도 navigation 객체를 사용할 수 있습니다. OpenDetailButton 컴포넌트를 다음과 같이 수정해보세요.

    screens/HomeScreen.js

    import React from 'react';
    import {createMaterialBottomTabNavigator} from '@react-navigation/material-bottom-tabs';
    import {Text, Button, View} from 'react-native';
    import Icon from 'react-native-vector-icons/MaterialIcons';
    import {
        useNavigation,
    } from '@react-navigation/native';
    
    (...)
    
    function OpenDetailButton() {
      const navigation = useNavigation();
    
      return (
        <Button
          title="Detail 1 열기"
          onPress={() => navigation.push('Detail', {id: 1})}
        />
      );
    }
    
    function HomeScreen() {
      return (
        <View>
          <Text>Home</Text>
          <OpenDetailButton />
        </View>
      );
    }
    
    (...)

    이렇게 useNavigation을 사용하면 navigation을 상위 컴포넌트에서 Props로 넣어주지 않아도 사용할 수 있답니다. 시뮬레이터에서 방금 수정한 버튼을 눌러 정상 작동하는지 확인해보세요.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.