Um mehr über react-native zu erfahren, versuche ich eine einfache Anwendung zu erstellen.Wie kann ich setState in reaktionsnativen nach dem Abrufen neuer Daten verwenden?
Diese Anwendung druckt zunächst "HELLO WORLD", danach ersetzt sie diesen Text durch den Inhalt einer JSON-Datei, die sie abruft (in meinem Test enthält sie {'Goodbye': 'World'}).
import React, { Component } from 'react';
import {
AppRegistry,
Text,
View,
} from 'react-native';
class FetchTextTest extends React.Component {
constructor(props) {
super(props);
this.state = {
content: "HELLO WORLD",
};
fetch('http://echo.jsontest.com/goodbye/world').then(function(response) {
response.json().then(function(data) {
this.setState({content: JSON.stringfy(data)});
});
});
}
render() {
return (
<Text>{this.state.content}</Text>
)
}
}
AppRegistry.registerComponent('FetchTextTest',() => FetchTextTest);
Dies funktioniert, dass es HALLO WORLD zeigt und holt dann die json, aber ich schaffte es nicht, um es zu bekommen, die neue Nachricht anzuzeigen. Stattdessen bekomme ich diesen Fehler:
Possible unhandles Promise Rejection (id: 0): TypeError: undefined is not a function (evaluating 'this.setState
Ich fühle mich wie ich es falsch mache. Soll ich setState nicht innerhalb des Konstruktors aufrufen? Bekomme ich nicht den richtigen Kontext?
Was ist der erwartete Weg?
Wie Sie Daten von URL zu holen verwaltet? Hast du benutzt npm Fetch-js? –
Ich bin mir nicht sicher, was Sie meinen, ich hole die Datei von meinem lokalen Rechner. Ich habe diesen Teil weggelassen, weil ich fühlte, dass "http: //localhost/test-file.json" für niemanden hilfreich wäre, aber die Abrufoperation funktioniert gut. – user1090729
Wenn dies ein Problem ist, habe ich die URL für eine, die außerhalb meiner lokalen Maschine funktioniert geändert. – user1090729