Ich bin ein Anfänger mit reactjs/redux, konnte kein einfaches Beispiel für die Verwendung eines API-Aufrufs zum Abrufen von Daten in einer Redux-App finden. Ich denke du könntest einen Jquery Ajax Call benutzen aber es gibt wahrscheinlich bessere Möglichkeiten da draußen?Wie man Daten durch api in redux holt?
Antwort
JSfiddle; http://jsfiddle.net/cdagli/b2uq8704/6/
Es verwendet Redox, Redux-Thunk und Fetch.
Abrufmethoden;
function fetchPostsWithRedux() {
return (dispatch) => {
dispatch(fetchPostsRequest());
return fetchPosts().then(([response, json]) =>{
if(response.status === 200){
dispatch(fetchPostsSuccess(json))
}
else{
dispatch(fetchPostsError())
}
})
}
}
function fetchPosts() {
const URL = "https://jsonplaceholder.typicode.com/posts";
return fetch(URL, { method: 'GET'})
.then(response => Promise.all([response, response.json()]));
}
Aktionen verwendet oben:
(Anmerkung:.. Sie viele Aktionen definieren können zB fetchPostRequest verwendet werden kann, eine Ladeanzeige angezeigt werden oder Sie können verschiedene Aktionen bei verschiedenen HTTP-Statuscodes Versand)
function fetchPostsRequest(){
return {
type: "FETCH_REQUEST"
}
}
function fetchPostsSuccess(payload) {
return {
type: "FETCH_SUCCESS",
payload
}
}
function fetchPostsError() {
return {
type: "FETCH_ERROR"
}
}
Und in Ihrem Reducer können Sie die Posts laden, um Zustand;
const reducer = (state = {}, action) => {
switch (action.type) {
case "FETCH_REQUEST":
return state;
case "FETCH_SUCCESS":
return {...state, posts: action.payload};
default:
return state;
}
}
Sie können auf den Status und die Aktionen innerhalb Ihrer Komponente zugreifen, nachdem Sie sie verbunden haben.
connect(mapStateToProps, {fetchPostsWithRedux})(App);
Erstellen Sie eine Aktion, bei der Sie die Anforderung an Ihre API senden. Sie können eine Bibliothek wie axios oder fetch verwenden, die ein Versprechen zurückgeben.
Aktionen/index.js:
import axios from 'axios';
export const FETCH_SOMETHING= 'FETCH_SOMETHING;
const ROOT_URL = 'http://api.youapi.com';
export function fetchWeather(city) {
const url = `${ROOT_URL}&q=${aParamYouMayNeed}`;
const request = axios.get(url);
return {
type: FETCH_SOMETHING,
payload: request
};
}
Dann wird in einem Druckminderer, verbrauchen einmal das Versprechen Ergebnis wie folgt aufgelöst:
Minderer/reducer_something.js:
import { FETCH_SOMETHING} from '../actions/index';
export default function(state = [], action) {
switch (action.type) {
case FETCH_SOMETHING:
return [ action.payload.data, ...state ];
}
return state;
}
-Code entliehen von Stephen Grider. Dies ist sein Repo: https://github.com/StephenGrider/ReduxCasts/tree/master/weather/src
Haben Sie einen Plünderer oder etwas? –
Nein, aber Sie können das Sample in myresponse (gerade editiert) klonen, das ich getestet habe und gut funktioniert. – Franco
Wie kommt es, dass Sie '.then()' nicht im Reduzierer verwenden müssen, um sicherzustellen, dass die Verheißung erfüllt wurde und "Daten" nicht "undefiniert" sind? – jhuang
- 1. wie man post api holt?
- 2. Wie man Daten von der API in vuex richtig holt?
- 3. Wie man Daten von Mongo db durch Objektschlüssel holt php
- 4. Wie man Daten von couchDB mit Couch-API holt?
- 5. Wie man Daten von der Datenbank holt?
- 6. Wie man die richtigen Daten holt
- 7. Wie man nur verwandte Daten holt?
- 8. Wie man Javascript synchron holt?
- 9. Wie man Daten von einem WebService in iPhone holt?
- 10. Wie man Wiktionary Wortinhalt holt?
- 11. Server-Seite mit asynchronen Daten Rendering holt
- 12. Wie man Daten mit api holt, verwende ich api.weathermap.org; Aber ich kann nur einige Daten holen
- 13. Wie man einen CKShare holt?
- 14. Wie man Daten von mehreren Tabellen in mysql holt?
- 15. Wie man Zeilen Daten holt und konvertiert es in Kommata?
- 16. Wie man Daten der spezifischen Klasse durch php DOM Parser in der Schleife holt?
- 17. Wie man Bilder durch Swift Firebase ihrer Benutzer holt?
- 18. Wie man Git-Commits durch kleine Batches holt
- 19. Wie man OneDrive-Fototags über API holt/hinzufügt?
- 20. Reaction redux wartet auf Daten von api
- 21. copy_from_user holt unerwartete Daten
- 22. Wie man Daten von firebase mit Schlüssel holt?
- 23. Wie man Daten mit apollo holt und natives reagiert
- 24. Wie man einzelne Reihe/Daten von Mysql_fetch_array holt?
- 25. Wie man Daten von DB mit Observables holt
- 26. Wie man Daten von MySQL mit mysql_fetch_array holt
- 27. PHP: LightOpenID, wie man Konto Daten vom Anbieter holt?
- 28. wie man `{` in Java Regex holt?
- 29. Wie man Zeile in PDO holt?
- 30. wie man Daten auf mongo db durch restheart api
https://github.com/argelius/react-onsenui-redux-weather/tree/master/api –
Mögliche Duplikat [Wie kann ich eine HTTP-Anforderung machen in reagieren-Redux?] (Http: //stackoverflow.com/questions/39794895/how-do-i-make-an-http-request-in-reac-redux) –