我正在使用Axios获取数据,并希望加载动画更长时间(出于个人原因)。
componentDidMount(){
var that = this;
axios.get('api.something.io.json', {
params: data
})
.then(function (response) {
console.log(response);
that.setState({
axiosResponse: response.data,
isLoading: false
})
})
.catch(function (error) {
console.log(error);
});
};
...
render() {
if(this.state.isLoading){
return <div>Waiting...</div>
}
return (
<div className="App">
<h1>{this.state.axiosResponse.awesomeTitle}</h1>
</div>
);
现在Waiting...
在主要组件呈现之前显示一瞬间。我想将"Waiting..."
延长一段时间,大约2-3秒。我尝试在componentDidMount
上使用setTimeout,但似乎无效。
componentDidMount(){
setTimeout(this.setState({isLoading: 1}), 3000);
//do axios call here
}
我还试图将.then
调用中的setTimeout存根:
componentDidMount(){
var that = this;
axios.get('https://api.rss2json.com/v1/api.json', {
params: data
})
.then(function (response) {
console.log(response);
setTimeout(
that.setState({
axiosResponse: response.data,
isLoading: false
})
, 3000);
})
...
没有用。如何将isLoading
延长3秒?
答案 0 :(得分:5)
setTimeout
接受函数作为第一个参数:
setTimeout(function() {
that.setState({
axiosResponse: response.data,
isLoading: false
})
}, 3000);
而不是:
setTimeout(
that.setState({
axiosResponse: response.data,
isLoading: false
}), 3000);