【问题标题】:Combining React-Native-Paper BottomNavigation with StackNavigator将 React-Native-Paper BottomNavigation 与 StackNavigator 结合使用
【发布时间】:2020-10-05 15:20:14
【问题描述】:

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

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 的错误。

请帮忙!!

【问题讨论】:

    标签: react-native react-navigation react-native-paper


    【解决方案1】:

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

    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

    <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;
    

    【讨论】:

      猜你喜欢
      • 2022-12-29
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      • 2016-06-18
      • 1970-01-01
      • 2023-02-21
      相关资源
      最近更新 更多