2016-06-10 14 views
0

Ich habe meinen Kopf gegen die Wand geschlagen und versucht, alle syntaktischen Fehler in meinem Code zu korrigieren, aber ich erhalte weiterhin den Fehler "setState kann während vorhandenem Status nicht aktualisieren". Ich habe mich auf ähnliche Themen bezogen, aber die Antworten schienen nicht wirklich gut auf meine Situation zu passen (oder die Lösung hat mich enttäuscht).setState kann trotz vorhandener Statusübergänge trotz korrekter Syntax nicht aktualisiert werden

Hier den Code ist, dass ich haben das Problem gezielt haben:

getInitialState: function() { 
     return { 
      searching: false, 
     anim: new Animated.Value(305), 
      user: null, 
      isLoaded: false, 
      dataSource: new ListView.DataSource({ 
      rowHasChanged: (row1, row2) => row1 !== row2, 
     }), 
     } 
    }, 
render: function() { 
    return <View> 
    <View style={styles.mainView}> 
     { this.renderProperElement() } 
    </View> 
}, 
renderProperElement: function() { 
     var that = this; 
     return <Animated.View 
       style={[styles.searchWrapper, {transform: [{translateX: this.state.anim}]}]}> 
       <TouchableOpacity style={styles.icon} onPress={that.startSearch()}> 
        <Image style={styles.icon} source={require('../img/search.png')} /> 
       </TouchableOpacity> 
       <TextInput style={styles.searchInput} autoFocus = {true} /> 
       <TouchableOpacity onPress={that.stopSearch()} style={styles.icon}> 
        <Image style={styles.icon} source={require('../img/cancel.png')} /> 
       </TouchableOpacity> 
      </Animated.View> 
    }, 
    startSearch: function() { 
     this.setState({ searching: true }); 

     Animated.timing(
      this.state.anim, 
      { 
       toValue: 0, 
       easing: Easing.elastic(1), 
      } 
     ).start(); 
    }, 
    stopSearch: function() { 
     Animated.timing(
      this.state.anim, 
      { 
       toValue: 305, 
       easing: Easing.elastic(1), 
      } 
     ).start(); 
    }, 

Insbesondere machen die Code-Singles aus dem Aufruf der Funktion in und die startSearch Funktion hier:

enter image description here

Jede Hilfe würde sehr geschätzt werden.

Antwort

0

Sie Ihren Zustand verschiedene Such: true, wenn Sie zuerst berührbare Opazität gedrückt, aber man hatte nie diesen Zustand auf Stop-Suchmethode geändert, so dass Sie besser wieder den Zustand zu falschem Such ändern im Stop-Suchverfahren wie:

Wenn Sie diesen Suchstatus erneut festlegen, wird Ihre Anwendung die erforderliche Bedingung ergeben.

Dieser Fehler kann auftreten, wenn versucht wird, die Statusbedingung mit demselben Wert wie vorher zu ändern.

+0

beziehen Sie sich auf die startSearch-Funktion? Wenn ja, habe ich den Zustand auf True gesetzt –

+0

oh - ich sehe - ja, ich habe das auch geändert, aber leider kein Glück –

+0

sonst versuchen Einstellung wie folgt: this.setState ({Suche: ! searching}); in beiden Fällen. –