2


J'essaye de pousser une vue dans Navigation avec passProps/paramters dans ReactNative. Ce que je pouvais avec quelques googlings et d'autres choses.

Ci-dessous est mon code pour pousser une vue dans le navigateur.

Comment afficher l'affichage avec les paramètres/callback dans ReactNative

export default class LoginScreen extends Component { 
     constructor() { 
      super() 
      this.state = { 
      email: '', 
      password: '' 
      } 
     } 

     render() { 
      return (
      <View style={{flex:1, flexDirection:'column', justifyContent: 'center'}}> 
        <View style={{flexDirection:'column'}}> 
        <TextInput 
        style = {styles.input} 
        placeholder = 'Email' 
        autoCapitalize = 'none' 
        onChangeText = { (email) => {alert(this.state.email); this.setState({email})}} 
       /> 
         <TextInput 
         style = {styles.input} 
         placeholder = 'Password' 
         autoCapitalize = 'none' 
         onChangeText = {() => this.updatePassword()} 
        /> 
        </View> 
        <View style={{ marginTop:20, alignItems: 'center'}}> 
        <TouchableOpacity style={{alignItems: 'center', justifyContent: 'center', borderWidth:1, width:100, height:40}} 
            onPress={() => this._onPressButton() } > 
        <Text >Login</Text> 
        </TouchableOpacity> 
        </View> 
       </View> 
     ); 
     } 

     _onPressButton() { 
     this.props.navigator.push({ 
      name: 'Home', 
      title: 'Home', 
      passProps: { 
      userName: this.state.email, 
      } 
callback: this._callbackFun(''), 
      }); 
     } 

     updateEmail = (text) => { 
      this.setState({email: text}) 
      alert(text) 
     } 
     updatePassword = (text) => { 
      this.setState({password: text}) 
      alert(this.state.password) 
     } 
    _callbackFun = (text) => { 
    alert(text) 
    } 

Je veux savoir pop vue avec passProps/paramètres de navigation afin que toute screen1 peut mettre à jour la vue basée sur l'activité est passé sur screen2.

Ci-dessous est mon code pour afficher une vue.

export default class HomeScreen extends Component { 
    constructor(props) { 
     super(props) 
    } 
    render() { 
    return (
     <View style={{flex:1, flexDirection:'column', alignItems: 'center', justifyContent: 'center'}}> 
      <Text>Login Successfully {this.props.userName}!!</Text> 
      <TouchableOpacity style={{alignItems: 'center', justifyContent: 'center', marginTop:20, borderWidth:1, width:100, height:40}} 
       onPress={() => this._onPressButton1('button1') }> 
       <Text >Button1</Text> 
     </TouchableOpacity> 
     <TouchableOpacity style={{alignItems: 'center', justifyContent: 'center', marginTop:20, borderWidth:1, width:100, height:40}} 
      onPress={() => this._onPressButton1('button2') }> 
      <Text >Button2</Text> 
     </TouchableOpacity> 
     </View> 
    ) 
} 

_onPressButton1(buttonName) { 
    if(buttonName == 'button1') 
    { 
     this.props.navigator.pop(); 
    } 
    else if (buttonName == 'button2') { 
    this.props.callback(); 
    } 
} 


Mais il me montre l'erreur comme callback function is undefined.

Toute aide pour passer le paramètre ou la fonction de rappel de réglage sera appréciée.

Répondre

0

essayer suivante

_onPressButton1(buttonName) { 
    if(buttonName == 'button1') 
    { 
     this.props.route.callback(args); 
     this.props.navigator.pop(); 
    } 
+0

toujours la même erreur. 'undefined n'est pas un objet (en évaluant 'this.props.route.callback''). Et une chose. Le plaisir du rappel est en train de s'exécuter dès que vous appuyez sur la vue. Pourquoi ça se passe comme ça? – pratik03

+0

avoir un itinéraire de passe comme un accessoire dans 'Navigator'? –

+0

cela devrait vous aider. http://stackoverflow.com/questions/29463592/react-native-pass-properties-on-navigator-pop –