Frage reactive-native - kann nicht auf setState innerhalb der Komponentenfunktion zugreifen


Ich lerne reaktiv-nativ und jetzt stehe ich mit diesem Fehler im staatlichen Unterricht fest:

_this2.setState is not a function.

Hier ist der aktuelle Codeblock.

...
export default class StopWatch extends Component {

  constructor(props){
    super(props);
    this.state = {
      timeElapsed: null
    }
  }

  handleStartStopClick(){
    var startTime = new Date();

    setInterval(() => {
      this.setState(previousState => {
        return {timeElapsed:new Date() - startTime};
      });
    }, 100);
  }
...

Was mache ich falsch?


5
2017-07-13 13:34


Ursprung


Antworten:


handleStartStopClick wird aus einem Kontext aufgerufen, in dem this ist nicht die Instanz Ihrer Klasse. Sie können das vermeiden, indem Sie hinzufügen .bind(this) an die Funktion, die Sie als Click-Handler übergeben.

<TouchableHighlight onPress={this.handleStartStopClick.bind(this)}>

7
2017-07-13 13:37



Versuche dies :

 this.setState({timeElapsed : (new Date() - startTime)})

Sie müssen Ihre Funktion im Konstruktor mit definieren binden (das) oder

handleStartStopClick = () => {...}

3
2017-07-13 13:36