可以使用axios的config参数中的onDownloadProgress来处理文件下载进度并更新状态。代码示例如下:
axios({
url: 'http://example.com/file.zip',
method: 'GET',
responseType: 'blob',
onDownloadProgress: function(progressEvent) {
const progress = Math.round((progressEvent.loaded / progressEvent.total) * 1000) / 10;
// 更新状态
this.setState({downloadProgress: progress});
}.bind(this)
}).then(response => {
// 文件下载完成
});
在config参数中设置onDownloadProgress回调函数,该函数将在文件下载时不断被调用。每次回调中通过progressEvent.loaded和progressEvent.total计算下载进度,并更新状态。注意需要使用bind函数将当前作用域绑定到回调函数中,以便在回调函数内部能够使用this.setState函数。文件下载完成后回调then函数。