javascript - 使用 React Navigators 嵌套导航器 - 'Home' 应该声明一个屏幕

标签 javascript android react-native react-navigation

我目前正在使用 React Native 和新的 React Navigation。我正在尝试关注 tutorial for nesting navigators ,但总是报错:

Route 'Home' should declare a screen. For example:

import MyScreen from './MyScreen';
...
Home: {
   screen: MyScreen,
}

我不确定我做错了什么。当我单独启动导航器时,它们会工作。但不幸的是没有合并。

这是我使用教程创建的 App.js:

import React from 'react';
import {
    AppRegistry,
    Text,
    View,
    Button
} from 'react-native';

import {
    StackNavigator,
    TabNavigator
} from 'react-navigation';

class HomeScreen extends React.Component {
    static navigationOptions = {
        title: 'Welcome',
    };
    render() {
        const { navigate } = this.props.navigation;
        return <View>
            <Text>Hello!</Text>
            <Button
                onPress={() => this.props.navigation.navigate('Chat', { user: 'Daniel' })}
                title="ReactNavigation Test"
            />
        </View>;
    }
}

class ChatScreen extends React.Component {
    static navigationOptions = {
        title: 'ReactNavigation Test',
    };
    render() {
        const { params } = this.props.navigation.state;
        return (
            <View>
                <Text>Neue Seite für den Navigator. Hallo {params.user}!</Text>
            </View>
        );
    }
}

class RecentChatsScreen extends React.Component {
    render() {
        return <Text>List of recent chats</Text>
    }
}

class AllContactsScreen extends React.Component {
    render() {
        return <Text>List of all contacts</Text>
    }
}

const ReactNativeTest = StackNavigator({
    Home: { screen: MainScreenNavigator },
    Chat: { screen: ChatScreen },
});

const MainScreenNavigator = TabNavigator({
    Recent: { screen: RecentChatsScreen },
    All: { screen: AllContactsScreen },
});

AppRegistry.registerComponent('ReactNativeTest', () => ReactNativeTest);

也许你可以帮我。我问了同样的问题here , 但也许这是提出问题的更好地方。

提前致谢!

最佳答案

我刚开始的时候也犯过这个错误......

MainScreenNavigator 放在 ReactNativeTest 之上。

正如您目前所拥有的那样,MainScreenNavigator 在被调用时并不存在。

const MainScreenNavigator = TabNavigator({
    Recent: { screen: RecentChatsScreen },
    All: { screen: AllContactsScreen },
});

const ReactNativeTest = StackNavigator({
    Home: { screen: MainScreenNavigator },
    Chat: { screen: ChatScreen },
});

关于javascript - 使用 React Navigators 嵌套导航器 - 'Home' 应该声明一个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42596714/

相关文章:

android - 独立世博会(ExpoKit)推送通知

android - AlertDialog 按钮未包装在 Lollipop 中

java - 重复调用 glBufferData 未能为新缓冲区分配内存

react-native - 如何在 React Native 中实现 'almost' 全屏模式?

javascript - Express JavaScript Supertest 期望特定的 json 字段

Javascript - 滚动事件的效率,仅运行代码一次

javascript - 如何在 JavaScript 中的不同变量的条件成立后自动递增变量

javascript - Codeigniter:Ajax 发送 id 和名称,但函数仅接收 id

react-native - 将原子作为函数参数传递时的试剂性能问题

javascript - 警告 : Can't perform a React state update on an unmounted component