大家好,大家有一个关于客户端获取的nextJS和swr的问题。
这是取自SWR官方文档的代码片段:
function Profile () {
const { data, error, isLoading } = useSWR('/api/user/123', fetcher)
if (error) return <div>failed to load</div>
if (isLoading) return <div>loading...</div>
// render data
return <div>hello {data.name}!</div>
}
我的理解是isLoading
在组件呈现时是真的。并且没有状态设置器或钩子来触发页面/组件的重新呈现,所以页面总是显示正在加载...
有人能解释一下这是怎么回事吗?
当API调用完成时,我应该如何触发页面函数的重新呈现?
1条答案
按热度按时间s4n0splo1#
通过将
if (isLoading) return <div>loading...</div>
更改为if (!data) return <div>loading...</div>
修复了此问题。如果出现错误,则会导致其自身出现问题,但页面不会卡住。