我正在制作一个检索和显示我的播放列表的网站,昨天一切正常,今天早上,虽然我没有触摸代码,但每次我想检索api上的数据时,我都有一个错误429。
我的代码:export const getUserPlaylist=async(params=null){
params={
params,
headers:{'Authorization': `Bearer ${AccessToken}`}
}
const response=await axios.get("https://api.spotify.com/v1/me/playlists", params)
return response.data
}
我试过有axios和没有axios,这不是问题。
我在React组件类中使用这个函数:
async searchPlaylists(){
if(!this.state.allPlaylists){
const response=await getUserPlaylist({limit:50})
this.setState({allPlaylists:response.items})
}
let playlists=[]
for(let i of this.state.allPlaylists){
if(i.name.indexOf(this.props.playlistName)===0){
playlists.push(new Playlist(i))
if(playlists.length===3) break
}
}
this.setState({playlists})
}
async componentDidMount(){
this.searchPlaylists()
}
async componentDidUpdate(){
this.searchPlaylists()
}
componentDidUpdate()
是一个生命周期钩子,每次组件重新呈现时,它都会运行其中的代码。
当组件的状态或道具发生变化时,React中的组件就会更新。searchPlaylists()
设置状态,这会导致重新呈现。
换句话说,你已经创建了一个无限循环,你在每次重新渲染时更新状态,这会导致另一次重新渲染,每次都发送一个API请求。
查看更多详细信息。