2017-06-13 6 views
0

Ich versuche, eine Lade Spinner anzeigen, während die Axios Anfrage erhalten wird, und damit ich glaube, ich brauche einen Rückruf von der Anfrage. Ich nenne die Erhaltungs-Anforderung in componentDidMount() wie so:Axios Callback auf GET für React

componentDidMount() { 
    this.props.fetchCloudProperties(() => { 
    this.setState({ dim : false }); 
    }); 
} 

Wo hoffentlich, wenn die Daten abgerufen werden, die Dimmer (Spinner) gehen weg aus der Basis dieser seState Anruf. Ich habe Callbacks mit Posts, aber habe noch nie einen mit get gemacht. Meine get Aktion für die Daten ist:

export function fetchCloudProperties(callback) { 
    const VARIABLE_URL = '/cloud/properties'; 
    const request  = axios.get(`${ROOT_URL}${VARIABLE_URL}`) 
    .then(request => { 
     return ({ 
     type : FETCH_CPS, 
     payload : request 
     }); 
    }).catch((error) => { 
     console.log(error); 
    }) 
} 

Im Moment ist die Konsole beschwert sich über ‚Aktionen Ebene Objekte sein müssen‘, die ich bin nicht sicher, was das bedeutet, aber auch ich habe es über ‚unhandled Ablehnung‘ beschweren gesehen also nicht so sicher.

EDIT: Ich habe eine createCloudProperty Methode, die einen Rückruf verwendet und es funktioniert gut:

export function createCloudProperty(values, callback) { 
    const VARIABLE_URL = '/cloud/property'; 
    const request  = axios.post(`${ROOT_URL}${VARIABLE_URL}`, values) 
    .then(() => callback()); 

    return ({ 
    type : CREATE_CP, 
    payload : request 
    }); 
} 

, die aus aufgerufen:

onSubmit(values) { 
    this.props.createCloudProperty(values,() => { 
    this.props.history.push('/cloudproperties'); 
    }); 
} 
+0

Verwenden Sie Redux oder Flussmittel oder etwas anderes? Ist 'fetchCloudProperties' ein Aktionsersteller? Wenn Sie asynchrone Aktionen ausführen, müssen Sie etwas wie "redux-thunk" verwenden, um Versprechen von einem Aktionsersteller zurückgeben zu können. –

+0

Mögliches Duplikat von [Aktionen müssen einfache Objekte in React/Redux sein?] (Https://StackOverflow.com/questions/39693161/actions-must-be-plain-objects-in-react-redux) –

+0

@AndyRay Ich bin mit 'redux-promise', und yes 'fetchCloudProperties()' ist ein Aktionsersteller, so weit mein Verständnis geht. – erp

Antwort

0

Sie passieren können nicht die Anforderung/Antwort weil es kein einfaches Objekt ist. Sie sollten die Antwortdaten verwenden.

export function fetchCloudProperties(callback) { 
    const VARIABLE_URL = '/cloud/properties'; 
    const request  = axios.get(`${ROOT_URL}${VARIABLE_URL}`) 
    .then(response => { 
     return ({ 
     type : FETCH_CPS, 
     payload : response.data 
     }); 
    }).catch((error) => { 
     console.log(error); 
    }) 
} 
+0

Das liefert den gleichen Fehler wie zuvor. Ich habe meine Frage dahingehend aktualisiert, wie ich es für einen Post gemacht habe und das funktioniert gut. – erp

Verwandte Themen