代码之家  ›  专栏  ›  技术社区  ›  handsome

在react native(0.5)中更改视图

  •  0
  • handsome  · 技术社区  · 6 年前

    我有两个视图,我想不使用 createStackNavigator

    无需使用导航,因为第一个视图只是一个欢迎屏幕

    import React from 'react';
    import { View, Text, Button } from 'react-native';
    
    class HomeScreen extends React.Component {
    
        render() {
    
            const { navigate } = this.props.navigation;
    
            return (
                <View>
                    <Text>Welcome!</Text>
                    <Button
                        title="sign In"
                        onPress={() => navigate('SignInScreen')}
                    />
    
                </View>
            );
        }
    }
    
    class SignInScreen extends React.Component {
    
        render() {
            return (
                <View>
                    <Text>Sign In screen</Text>
                </View>
            );
        }
    }
    
    export default HomeScreen
    

    我得到的错误是

    TypeError: undefined is not an object (evaluating 'this.props.navigation.navigate')
    

    非常感谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   AJ Genung    6 年前

    在状态上使用标志。当您单击上的按钮时 HomeScreen ,它会将标志更改为true,这将允许条件语句调用 SignInScreen 待渲染。

    import React from 'react';
    import { View, Text, Button } from 'react-native';
    
    class HomeScreen extends React.Component {
      state = {
        loggedIn: false,
      };
    
      render() {
        const { navigate } = this.props.navigation;
    
        return this.loggedIn ? (
          <SignInScreen />
        ) : (
          <View>
            <Text>Welcome!</Text>
            <Button
              title="sign In"
              onPress={() => this.setState({ loggedIn: true })}
            />
          </View>
        );
      }
    }
    
    class SignInScreen extends React.Component {
      render() {
        return (
          <View>
            <Text>Sign In screen</Text>
          </View>
        );
      }
    }
    
    export default HomeScreen;