【问题标题】:How to use props and navigation route in same const function (react native)?如何在同一个 const 函数中使用道具和导航路线(反应原生)?
【发布时间】:2021-04-02 10:21:57
【问题描述】:

我是 react-native 的新手。我正在尝试在 const 函数中使用道具和导航。我不知道该怎么做。

    render() {
return (
  <View style={styles.container}>
      {this.state.signedIn ? (
      <LoggedInPage name={this.state.name} photoUrl={this.state.photoUrl} />
    ) : (
      <LoginPage signIn={this.signIn} />
    )}
    <TouchableOpacity 
     onPress={() => {this.props.navigation.navigate('About You')}}
      style={styles.submitButton4}>
      <Text style={styles.buttonText2}> Next </Text>
    </TouchableOpacity>
   </View>
   );

} 常量 LoggedInPage = 道具 => { 返回 ( 欢迎 {props.name} 更改照片 {this.props.navigation.navigate('registration')}} 样式={styles.submitButton4}> 下一个 ) }

【问题讨论】:

    标签: reactjs react-native


    【解决方案1】:

    如果您的 LoggedInPage 是在 Navigator 中定义的屏幕之一,那么导航属性会自动传递到您的组件中。然后你可以像这样使用导航props.navigation.navigate

    你只需要从你的父母那里传递导航道具。

    return (
      <View style={styles.container}>
          {this.state.signedIn ? (
          <LoggedInPage name={this.state.name} photoUrl={this.state.photoUrl} navigation={this.props.navigation} />
        ) : (
          <LoginPage signIn={this.signIn} navigation={this.props.navigation} />
        )}
        <TouchableOpacity 
         onPress={() => {this.props.navigation.navigate('About You')}}
          style={styles.submitButton4}>
          <Text style={styles.buttonText2}> Next </Text>
        </TouchableOpacity>
       </View>
       );
    

    那么你可以使用它的命名方式:

    const LoggedInPage = props => {
    
    return (
    
      <Text style={styles.text1}>Welcome {props.name}</Text>
      <Image style={styles.image} source={{ uri: props.photoUrl }} />
    
      <TouchableOpacity 
           
           style={styles.submitButton1}> 
           <Text style={styles.buttonText3}> Change photo </Text>
         </TouchableOpacity>
      <TouchableOpacity 
         onPress={() => {props.navigation.navigate('registration')}}
          style={styles.submitButton4}>
          <Text style={styles.buttonText2}> Next </Text>
        </TouchableOpacity>
    </View>
    ) }
    

    【讨论】:

    • 感谢您的回答,但没有奏效。我的登录和登录页面位于名为主屏幕的同一屏幕中。我收到一个错误“未定义不是对象(评估'props.navigation.navigate')。用户使用谷歌帐户登录,点击他的谷歌帐户后,他进入登录页面(如上所示)。
    • 您能发布您的导航器代码吗?或者在哪里调用 LoggedInPage?这意味着它不是导航器的一部分。
    • 嗨文.. 这里是:render() { return ( {this.state.signedIn ? ( ) : ( )} {this.props.navigation.navigate('关于你' )}} style={styles.submitButton4}> Next ); } }
    • 我知道问题出在哪里,用这段代码更新你的问题,我可以提供答案。
    • 我很高兴。我也是堆栈溢出的新手。我改了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 2021-03-16
    • 1970-01-01
    相关资源
    最近更新 更多