Ich versuche, ein Versprechen ohne Verwendung von "ReduxPromise" zu behandeln.reagieren - Handhabung Versprechen ohne "ReduxPromise"
return (
<div>
<div>{this.props.weatherData.then(response => {return response.data.city.name})}</div>
</div>
);
Aber ich bekomme diese Fehlermeldung:
bundle.js:1212 Uncaught Error: Objects are not valid as a React child (found: [object Promise]).
Wenn ich console.log(response.data.city.name)
, ich eine Folge Zeichenfolge bekommen.
Mit ReduxPromise, ich habe nur dies zu tun:
const createStoreWithMiddleware = applyMiddleware(ReduxPromise)(createStore);
Dann ist dieses ich nur zurückgeben, die in der Komponente:
<div>{this.props.weatherData.data.city.name}</div>
Aber ich will es OHNE ReduxPromise
tunOhne ReduxPromise, this.props.weatherData
ist ein Versprechen. Wie gehe ich damit in der Komponente um?
dies unten tun tut eine Endlosschleife:
render(){
if (!this.props.weatherData) {
return <div></div>
};
this.props.weatherData.then(response => {
this.setState({ weatherData: response.data });
console.log(this.state.weatherData.city.name);
});
City Namen unendlich ausgegeben.
Ich erhalte 'Uncaught Typeerror: nicht Eigenschaft lesen‚und dann‘von null' – trogne
' this.props .weatherData' existiert nicht beim Aufruf von componentDidMount – trogne
props.weatherData ist nur eine Funktion um die Wetterdaten zu holen, oder? Wenn ja, warum existiert es nicht auf mount? Wenn dies aus irgendeinem Grund nicht möglich ist und nicht möglich ist, müssen Sie eine componentWillReceiveProps-Lebenszyklusmethode einrichten, um nach prop.weatherData zu suchen. An diesem Punkt können Sie den Abruf auslösen. Etwas seltsam, dass es nicht existiert, da Sie denselben Fehler erhalten haben sollten, als Sie this.props.weatherData in render aufgerufen haben. – TLadd