Ich versuche, um eine Aktion zu gründen, damit, wenn ich einen AJAX-Aufruf machen kann ich dann eine andere Aktion abfeuern, die den Zustand der Daten aktualisiert, die aus dem Aufruf zurückgegeben wird:Redux Async Aktionen
Aktionen. js
import axios from 'axios';
export const setUserTeamsState = (teams) => {
return {
type:'SET_USER_TEAMS',
teams:teams
}
}
export const getUserTeams = (dispatch) => {
return axios.get('http://localhost:7777/getteams')
.then((response) => {
console.log(response.data)
dispatch(setUserTeamsState(response.data))
})
.catch((error) => {
//console.log(error);
});
}
in meiner Komponente nenne ich die Aktion wie folgt:
this.props.teamActions.getUserTeams()
die getUserTeams
Aktion feuert in Ordnung, weil ich Das Konsolenprotokoll kam von der API zurück, aber die setUserTeamsState
scheint nicht zu sein. Ich habe versucht, Online-Beispielen so gut wie möglich zu folgen, aber nicht sicher, wo ich falsch gelaufen bin?
EDIT
Hier ist mein Minderer unter:
Reducer.js
const initialState = {
userTeams: []
};
const manageTeamsReducer = (state = initialState, action) => {
switch (action.type) {
case 'SET_USER_TEAMS': {
const newState = Object.assign(state, {
userTeams:action.teams
});
return newState;
}
default:
return state;
}
}
export default manageTeamsReducer;
wenn in actions.js ich console.log(dispatch(setUserTeamsState(response.data)))
es gibt meine das setUserTeamsState
Objekt so ich bin nicht sicher, warum es nicht ausgeführt wird. Ist das der richtige Ansatz für den Anfang?
Sie tun irgendwelche Fehler auf der Konsole? Erhalten Sie irgendeine Art von Ausnahme? – mersocarlin
Wird Ihr Reduzierer aufgerufen, wenn SET_USER_TEAMS gesendet wird? – topher
Es sieht so aus, als ob Sie userTeams als Array im Anfangszustand festlegen, aber als reduzierter Status im Reduzierungsaufruf zurückkehren und den Status "Objekt als neu" erhalten. –