首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用AppContainer问题的React Native中的所有页面中使用相同的自定义标题

在使用AppContainer问题的React Native中的所有页面中使用相同的自定义标题
EN

Stack Overflow用户
提问于 2019-04-24 09:48:32
回答 1查看 65关注 0票数 1

我正在使用react-native和react导航,我遇到了这个问题,因为我的屏幕不能正确呈现。我引用这个链接来使用相同的消失头作为AppContainer的包装器:https://medium.com/appandflow/react-native-scrollview-animated-header-10a18cb9469e

第一个屏幕AuthLoadingScreen显示得很好,然后应该根据用户是否经过验证导航到堆栈中的任意一个。但由于某些原因,在用户验证或未验证之后,什么也没有显示。我在进入两个堆栈时都有一个console.log,它们都可以正常工作,只是没有任何东西被渲染。任何想法都是值得感谢的。

以下是我到目前为止的一些代码片段:

<- App.js ->

代码语言:javascript
复制
<View style={styles.fill}>
        <Animated.ScrollView
          style={styles.fill}
          scrollEventThrottle={1}
          onScroll={Animated.event(
            [{ nativeEvent: { contentOffset: { y: this.state.scrollY } } }],
            { useNativeDriver: true },
          )}
        >
          <-----My AppContainer----->
          <AppContainer /> 
          <------------------------->
        </Animated.ScrollView>
        <Animated.View
          pointerEvents="none"
          style={[
            styles.header,
            { transform: [{ translateY: headerTranslate }] },
          ]}
        >
          <Animated.Image
            style={[
              styles.backgroundImage,
              {
                opacity: imageOpacity,
                transform: [{ translateY: imageTranslate }],
              },
            ]}
            source={require('./assets/images/casino/casino-10.jpg')}
          />
        </Animated.View>
      </View>

<-My App Container consists of->:

import AuthLoadingScreen from '../screens/AuthLoadingScreen';

const AppStack = createStackNavigator({
  Home: { screen: HomeScreen },
  Settings: { screen: SettingsScreen },
  OfferCategories: { screen: OfferCategoriesScreen },
});

const AuthStack = createStackNavigator({
  Login: LoginScreen
});

export default createAppContainer({createSwitchNavigator({
  AuthLoading: AuthLoadingScreen,
  App: AppStack,
  Auth: AuthStack,
})});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-24 13:38:37

您可以使用两个选项来完成此操作:在AppContainer中进行扭曲,或者在导航器的顶层中定义标题部分:

让我们从第一个选项开始:您可以

代码语言:javascript
复制
const AppContainerNavigator = createAppContainer({createSwitchNavigator({
  AuthLoading: AuthLoadingScreen,
  App: AppStack,
  Auth: AuthStack,
})});
export default class AppContainer extends Component {
 render() {
  return (
    <YOUR_HEADER_COMPONENT>
     <AppContainerNavigator
       ref={nav => {
         this.navigator = nav;
       }}
      />
    </YOUR_HEADER_COMPONENT>
      )
  }
 }

或者另一种方法是将header组件传递给您的导航器,同时定义如下内容:

代码语言:javascript
复制
let MY_HEADER_COMPONENT = {
  headerLeft: () => {
    return null;
  },
  header: () => {
    return <YOUR_HEADER_COMPONENT></YOUR_HEADER_COMPONENT>;
  },
  headerRight: () => {
    return null;
  }
};
export default createStackNavigator({
 AuthLoading:{
    screen: AuthLoadingScreen,
    navigationOptions: ({
      navigation
    }) => (MY_HEADER_COMPONENT)},

    App:{
    screen: AppStack,
    navigationOptions: ({
      navigation
    }) => (MY_HEADER_COMPONENT)},
....
})

希望这能回答你的问题

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55821263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档