首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将React-Native-Paper BottomNavigation与StackNavigator相结合

将React-Native-Paper BottomNavigation与StackNavigator相结合
EN

Stack Overflow用户
提问于 2020-10-05 23:20:15
回答 1查看 451关注 0票数 2

我目前使用的是React-Native-Paper bottomNavigation。它工作得很好。然而,下一个要求是将Stack Navigator添加到各个屏幕。我让它在常规的底部栏导航上工作,但无法让它与React-Native-Paper库一起工作。

代码语言:javascript
复制
const SubjectNavigator = createStackNavigator({
  Subjects: SubjectScreen,
  Topics: TopicListScreen
}, {
    navigationOptions: {}
});

const NavigationController = () => {
  const [index, setIndex] = React.useState(0);
  const [routes] = React.useState([
    { key: 'home', title: 'Home', icon: 'home', color: '#3F51B5' },
    { key: 'subjects', title: 'Subjects', icon: 'book-open', color: '#009688' },
    { key: 'tournaments', title: 'Tournaments', icon: 'trophy', color: '#795548' },
    { key: 'videos', title: 'Video Feeds', icon: 'video', color: '#607D8B' }
  ]);

  const renderScene = BottomNavigation.SceneMap({
    home: HomeScreen,
    subjects: SubjectScreen,
    tournaments: TournamentScreen,
    videos: VideoScreen
  });

  return (
    <BottomNavigation
      navigationState={{ index, routes }}
      onIndexChange={setIndex}
      renderScene={renderScene}
    />
  );
};

export default NavigationController;

这样做会导致在subjectNavigator堆栈中从一个屏幕移动到另一个屏幕时出现类似于- Can't Find Variable: navigation的错误。

请帮帮我!!

EN

回答 1

Stack Overflow用户

发布于 2021-04-11 22:25:15

您可以创建一个堆栈导航器组件,该组件将用于每个路由。然后,传入一个initialRouteName属性。

代码语言:javascript
复制
class AppStackScreen extends React.Component {

    render(){
        return(
            <NavigationContainer>
                <Stack.Navigator initialRouteName={this.props.initialRouteName}>
                  <Stack.Screen
                    name="Home"
                    component={HomeScreen}
                  />
                  <Stack.Screen
                    name="Subjects"
                    component={SubjectScreen}
                  />
            </NavigationContainer>
        );
    }
}

然后在你的BottomNavigation

代码语言:javascript
复制
<BottomNavigation
    navigationState={this.state}
    onIndexChange={this.handleIndexChange}
    renderScene = {({ route, jumpTo }) => {
        switch (route.key) {
            case 'Home':
                return <AppStackScreen initialRouteName="Home" jumpTo={jumpTo} />;
            break;
            case 'Subjects':
                return <AppStackScreen initialRouteName="Subjects" jumpTo={jumpTo} />;
            break;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64211508

复制
相关文章

相似问题

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