Ich habe eine Funktion fetchTweets, die Tweets mit bestimmten Parametern a und b abruft.Reagieren: Führen Sie den letzten Teil der Funktion erst nach dem ersten Teil ist vollständig abgeschlossen
Funktion toPageTwo fetchTweets Funktion aufruft, und dann leitet Benutzer auf eine andere Seite, wo die abgerufenen Daten
toPageTwo() {
this.fetchTweets(param1,param2);
this.props.router.push(`/page2`);
}
}
toPageTwo gezeigt wird() ausgeführt wird, wenn der Benutzer eine Sendetaste klicken:
<Button onClick={::this.toPageTwo}>
Send
</Button>
Wie kann ich sicherstellen, dass page2 erst geladen wird, nachdem die Tweets richtig abgerufen wurden?
UPDATE:
I Redux und Axios bin mit dem Tweets und die Taste zu holen, die das Abrufen usw. beginnt, wird in der Seitenleiste befinden. Meine Dateibaum sieht wie folgt aus:
src
redux
actions
tweets.js
common
sidebar.js
tweets.js:
import axios from "axios";
export function fetchTweets(a,b){
return function(dispatch) {
axios.get("http://127.0.0.1:5000/?a="+a+"&b="+b)
.then((response) => {
dispatch({type: "FETCH_TWEETS_FULFILLED", payload: response.data})
})
.catch((err) => {
dispatch({type: "FETCH_TWEETS_REJECTED", payload: err})
})
}
}
Wenn ich ".then" zu FETCH_TWEETS_FULFILLED Versand hinzufügen, ich bin in der Lage log zu trösten, nachdem holen. Dies gilt jedoch nicht mit this.props.router.push (/page2
)
sidebar.js arbeiten:
-- IMPORTS --
@connect((state) => state)
@withRouter
class ApplicationSidebar extends React.Component {
-- BUNCH OF FUNCTIONS --
fetchTweets(a,b) {
this.props.dispatch(fetchTweets(a,b));
}
toPageTwo() {
fetchTweets(param_a,param_b);
this.props.router.push(`/page2`);
}
}
render() {
return (
-- SIDEBAR STUFF --
<Button onClick={::this.toPageTwo}>
Send
</Button>
);
}
Aus irgendeinem Grund eine Rückruffunktion zu schaffen ergibt das gleiche Ergebnis wie reguläre Funktion: diese Funktion ist wird ausgeführt, bevor der erste Teil (das Holen von Tweets) abgeschlossen ist.
Danke!
Wie genau erhalten Sie Tweets? –
Ich habe meinem ursprünglichen Beitrag mehr hinzugefügt. Vielen Dank! – jjjayn
Vorschlag: Markieren Sie Ihre Frage mit dem Redux-Tag. –