2017-06-13 64 views
0

我試圖顯示一個加載微調而axios獲取請求正在進行,並且這樣做我相信我需要從請求回調。我調用get請求componentDidMount()像這樣:Axios回調獲取反應

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

如果希望當數據被檢索到,調光器(微調)將離開基於關閉該seState通話。我有回帖的帖子,但從來沒有做過一個get。我對數據取得動作是:

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); 
    }) 
} 

眼下控制檯抱怨「操作必須是純對象」,這我不知道這意味着什麼,而且我已經看到了抱怨「未處理拒絕」所以不太確定。

編輯:我有一個使用一個回調createCloudProperty方法,它工作正常:

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 
    }); 
} 

是從所謂:

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

您是否在使用redux或flux或其他? fetchCloudProperties是動作創造者嗎?如果你正在做異步操作,你需要使用'redux-thunk'這樣的東西來返回動作創建者的承諾。 –

+0

[Actions必須是React/Redux中的普通對象?](https://stackoverflow.com/questions/39693161/actions-must-be-plain-objects-in-react-redux) –

+0

@AndyRay我是根據我的理解,使用'redux-promise',並且是'fetchCloudProperties()'是動作創建者。 – erp

回答

0

你不可錯過的請求/響應因爲它不是一個普通的對象。您應該使用響應數據。

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

這提供了與以前相同的錯誤。我更新了我的問題,我是如何爲一個帖子做的,而且工作正常。 – erp