React Native

React Native - 헤더 버튼 추가

크런키스틱 2025. 2. 23. 18:56
728x90

React Native의 Navigation 헤더 버튼을 추가하는 방법은 두 가지가 있다.

그 동안 개발에서는 아래에 소개할 첫 번째 방법으로만 버튼을 생성해도 충분했다. 이번 프로덕션용 어플을 개발하는 도중에 screen 내 state와 상호작용이 필요한 event가 발생하여 props, recoil 등 방법을 구상해도 하나같이 만족스럽지 않아 찾아보니 간단한 기본 방법이 존재하여 정리한다.

 

1. Navigation options 활용

아래와 같이 Stack.Screen을 통해 원하는 화면에 커스텀 헤더 버튼을 좌우에 추가할 수 있다.

// navigation.tsx

...
<Stack.Screen
  name="Test2"
  component={Test2Screen}
  options={({navigation}) => ({
    headerShown: true,
    headerBackVisible: false,
    headerTitleAlign: 'center',
    headerLeft: () => <AngleLeft onPress={() => navigation.goBack()} />,
  })}
/>
...

 

 

2. useEffect 활용

위에 언급한 것처럼 해당 화면 내에서만 발생하는 event와 연결해야 될 헤더라면 useEffect를 활용하면 간단하게 해결된다.

// test2.tsx

// Header button
useEffect(() => {
    navigation.setOptions({
      headerRight: () => (
        <Pressable
          className="px-6"
          onPress={() => navigation.navigate('Main', {screen: 'Home'})}>
          <HomeOutlineIcon />
        </Pressable>
      ),
    });
}, [navigation]);

 

 

3. 실행

실행해보면 아래와 같이 헤더에 좌우버튼이 잘 추가된 것을 확인할 수 있다.

728x90