Jestem początkujący z reactjs/redux, nie mogłem znaleźć prostego w użyciu przykładu użycia wywołania api do pobierania danych w aplikacji redux. Sądzę, że można użyć wywołania ajax jquery, ale są tam prawdopodobnie lepsze opcje?Jak pobrać dane przez api w redux?
Odpowiedz
JSfiddle; http://jsfiddle.net/cdagli/b2uq8704/6/
Używa redux, redux-thunk i Fetch.
Metody pobierania;
(Uwaga::.. Można zdefiniować wiele akcji np fetchPostRequest mogą być używane do wyświetlania wskaźnik załadunku lub można wysyłają różne działania w przypadku różnych kodów stanu HTTP)
użyte powyżejfunction 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()]));
}
Akcje
function fetchPostsRequest(){
return {
type: "FETCH_REQUEST"
}
}
function fetchPostsSuccess(payload) {
return {
type: "FETCH_SUCCESS",
payload
}
}
function fetchPostsError() {
return {
type: "FETCH_ERROR"
}
}
W swoim reduktorze można załadować posty do stanu;
const reducer = (state = {}, action) => {
switch (action.type) {
case "FETCH_REQUEST":
return state;
case "FETCH_SUCCESS":
return {...state, posts: action.payload};
default:
return state;
}
}
Możesz uzyskać dostęp do stanu i działań w ramach komponentu po podłączeniu ich;
connect(mapStateToProps, {fetchPostsWithRedux})(App);
Utwórz akcję, w której wykonuje się żądanie do interfejsu API. Możesz użyć biblioteki takiej jak aksios lub pobranie, które zwróci obietnicę.
działania/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
};
}
Następnie w reduktor, zużywają wynik obietnica raz uchwala się co następuje:
reduktory/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;
}
Kod pożyczone od Stephena Gridera. To jest jego repozytorium: https://github.com/StephenGrider/ReduxCasts/tree/master/weather/src
Czy masz plunarza czy coś takiego? –
Nie, ale możesz sklonować próbkę w mojej odpowiedzi (tylko ją edytować), którą przetestowałem i działa dobrze. – Franco
Dlaczego nie trzeba używać '.then()' w reduktorze, aby upewnić się, że obietnica została spełniona i że 'dane' nie jest' niezdefiniowane'? – jhuang
- 1. Jak uzyskać dane tranzytowe Google przez api
- 2. Jak mogę pobrać dane z moich import.io serwerów api
- 3. Jak pobrać nowe dane w odpowiedzi na zmianę routera za pomocą Redux?
- 4. Jak pobrać wszystkie dane w jednym zapytaniu
- 5. Jak pobrać dane wejściowe MIDI w C++?
- 6. Jak pobrać dane aplikacji w Xcode 6
- 7. Obsługa połączeń api w Redux z Axios
- 8. Jak pobrać Google Chart API?
- 9. Wzywając ogromne dane zwracane przez Web API
- 10. Global.asax - Application_Error - Jak mogę pobrać dane strony?
- 11. redux dostać przedmiot ze stanu lub pobrać z serwera
- 12. Jak przetestować awarie żądania interfejsu API w Redux Saga?
- 13. Asynchroniczny stan początkowy React-Redux Redux-Thunk
- 14. Jak mogę pobrać "kanały w kanale" w YouTube API v3
- 15. Jak pobrać lokalizację urządzenia przy użyciu interfejsu API interfejsu API?
- 16. Jak przesłać dane JSON przez HTTP API używając VBScript?
- 17. Jak mogę pobrać dane z AsyncTasks doInBackground()?
- 18. Firebase REST API: jak pobrać dane według priorytetu, jak startAt/endAt w JS?
- 19. Jak pobrać dane intraday giełdowe R
- 20. Jak pobrać dane z DialogFragment do fragmentu?
- 21. Jak pobrać dane z listy ze słownika
- 22. Czy dane powinny znajdować się w drzewie stanu redux?
- 23. Jak pobrać dane wyjściowe z wieloprocesowości w Pythonie?
- 24. CORS preflight error redux & loopback API
- 25. Jak mogę pobrać dokumenty Rust API?
- 26. Redux-saga wstępnie załadować dane dotyczące zmiany trasy
- 27. działania test Redux że wywołuje API
- 28. Nock nie przechwytuje wywołania API w teście Redux
- 29. Jak mogę pobrać ISP odwiedzającego przez PHP?
- 30. Jak pobrać dane HTML POST do manipulacji w WebForms ASP.NET?
https://github.com/argelius/react-onsenui-redux-weather/tree/master/api –
Możliwy duplikat [Jak zrobić żądania HTTP w reagują-Redux?] (Http: //stackoverflow.com/questions/39794895/how-do-i-make-an-http-request-in-react-redux) –