program story

스택 네비게이터에서 헤더 숨기기 React Navigation

inputbox 2020. 11. 9. 08:09
반응형

스택 네비게이터에서 헤더 숨기기 React Navigation


스택 및 탭 탐색기를 모두 사용하여 화면을 전환하려고합니다.

const MainNavigation = StackNavigator({
      otp: { screen: OTPlogin },
      otpverify: { screen: OTPverification},
      userVerified: {
        screen: TabNavigator({
          List: { screen: List },
          Settings: { screen: Settings }
        }),
      },
    });

이 경우 stacknavigator를 먼저 사용한 다음 tabnavigator를 사용합니다. 스택 탐색기의 헤더를 숨기고 싶습니다. 다음과 같은 탐색 옵션을 사용할 때 제대로 작동하지 않습니다.

navigationOptions: { header: { visible: false } }

나는 stacknavigator에서 사용하는 처음 두 구성 요소 에서이 코드를 시도하고 있습니다. 이 줄을 사용하면 다음과 같은 오류가 발생합니다.

여기에 이미지 설명 입력


이것을 사용하여 스택 바를 숨 깁니다 (두 번째 매개 변수의 값입니다).

{
    headerMode: 'none',
    navigationOptions: {
        headerVisible: false,
    }
}

이 방법을 사용하면 모든 화면에서 숨겨집니다.

귀하의 경우에는 다음과 같이 보일 것입니다.

const MainNavigation = StackNavigator({
  otp: { screen: OTPlogin },
  otpverify: { screen: OTPverification },
  userVerified: {
    screen: TabNavigator({
    List: { screen: List },
    Settings: { screen: Settings }
   }),
 }
},
{
  headerMode: 'none',
  navigationOptions: {
    headerVisible: false,
  }
 }
);

헤더를 숨기려는 페이지에서 아래 코드를 사용하십시오.

export default class Login extends Component {
    static navigationOptions = {
        header: null
    }
}

Stack Navigator 참조


이것을 클래스 / 컴포넌트 코드 스 니펫에 추가하면 헤더가 숨겨집니다.

 static navigationOptions = { header: null }

화면이 클래스 구성 요소 인 경우

static navigationOptions = ({ navigation }) => {
    return {
       header: () => null
    } 
}

첫 번째 방법 (함수)으로 대상 화면에 이것을 코딩하십시오.


다음과 같이 특정 화면에서 숨기려면 다음을 수행하십시오.

// create a component
export default class Login extends Component<{}> {
  static navigationOptions = { header: null };
}

누군가 헤더를 토글하는 방법을 찾고 있다면 componentDidMount에서 다음과 같이 작성하십시오.

  this.props.navigation.setParams({
      hideHeader: true,
  });

언제

static navigationOptions = ({ navigation }) => {
    const {params = {}} = navigation.state;

    if (params.hideHeader) {
      return {
        header: null,
      }
    }

    return {
        headerLeft: <Text>Hi</Text>,
        headerRight: <Text>Hi</Text>,
        headerTitle: <Text>Hi</Text>
    };
};

이벤트가 완료되면 어딘가에 :

this.props.navigation.setParams({
  hideHeader: false,
});

내가 사용하고 header : null대신 header : { visible : true }내가 사용하고는 반응 네이티브 CLI를. 이것은 예입니다.

static navigationOptions = {
   header : null   
};

사용하다

static navigationOptions = { header: null } 

클래스 / 컴포넌트에서

class Login extends Component {

    static navigationOptions = {
        header: null
    }
}

이것은 나를 위해 일했습니다.

const Routes = createStackNavigator({
Intro: {
    screen: Intro,
    navigationOptions: {
        header: null,
    }
}
},
    {
        initialRouteName: 'Intro',
    }
);

대상 화면에서 이것을 코딩해야합니다!

 static navigationOptions = ({ navigation }) => {
    return {
       header: null
    }
 }

const CallStack = createStackNavigator({
  Calls: Calls,
  CallsScreen:CallsScreen,
}, {headerMode: 'none'});

CallStack.navigationOptions = {
  tabBarLabel: 'Calls',
  tabBarIcon: ({ focused }) => (
    <TabBarIcon
      focused={focused}
      name={Platform.OS === 'ios' ? 'ios-options' : 'md-options'}
    />
  ),

   header: null,

        headerVisible: false,

};

모든 대답은 클래스 구성 요소로 수행하는 방법을 보여 주지만 기능 구성 요소의 경우 다음을 수행합니다.

const MyComponent = () => {
    return (
        <SafeAreaView>
            <Text>MyComponent</Text>
        </SafeAreaView>
    )
}

MyComponent.navigationOptions = ({ /*navigation*/ }) => {
    return {
        header: null
    }
}

헤더를 제거하면 구성 요소가 볼 수없는 곳에있을 수 있으므로 (휴대 전화에 정사각형 화면이없는 경우) 헤더를 제거 할 때 사용하는 것이 중요합니다.


저도 같은 문제를했습니다하지만 난 사용하여 개별 클래스 내 헤더 작업을 완료했습니다 navigationOptions내가 사용하고 createBottomTabNavigator그 헤더 볼 수 있으며 클래스의 헤더가 표시되지 않습니다. 내가 좋아하는 모든 것을 시도했다 headerMode: none, header: null등등, 그러나의 헤더를 숨길 수 없었다 bottomTabNavigator.

참고 URL : https://stackoverflow.com/questions/44701245/hide-header-in-stack-navigator-react-navigation

반응형