【问题标题】:Nesting Navigators with React Navigators - 'Home' should declare a screen使用 React Navigator 嵌套 Navigator - 'Home' 应该声明一个屏幕
【发布时间】:2017-07-24 14:47:29
【问题描述】:

我目前正在使用 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,但也许这是问问题的更好地方。

提前致谢!

【问题讨论】:

    标签: javascript android react-native react-navigation


    【解决方案1】:

    我刚开始的时候也犯了这个错误……

    MainScreenNavigator 放在ReactNativeTest 上方。

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

    const MainScreenNavigator = TabNavigator({
        Recent: { screen: RecentChatsScreen },
        All: { screen: AllContactsScreen },
    });
    
    const ReactNativeTest = StackNavigator({
        Home: { screen: MainScreenNavigator },
        Chat: { screen: ChatScreen },
    });
    

    【讨论】:

    • 谢谢,我也犯了同样的错误!
    • 哎呀!没有吊装!我在想,既然是 JS,不管我在哪里定义它,它都会解析变量。
    • 这里的 Javascript 提升发生了什么...?
    猜你喜欢
    • 2020-07-20
    • 2023-04-09
    • 2016-03-07
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多