ReactuseEffect = async = try setIsLoadingtrue; const res = await fetchapidiscussions$discussionidpostsskip=$skip&limit=$limit; if res
有几种可能的原因可以解释为什么会出现 first 打印了但是 second 没有打印的情况:
-
请求
/api/discussions/${discussion.id}/posts?skip=${skip}&limit=${limit}返回的结果没有触发res.ok,这意味着请求失败了。这可能是由于网络问题或服务器错误引起的。你可以通过查看网络请求的返回状态码来确认是否成功。 -
请求
/api/discussions/${discussion.id}/posts?skip=${skip}&limit=${limit}返回的结果中没有有效的json.data或json.data.length为0,这意味着没有新的帖子需要加载。在这种情况下,setNewPosts和setDataList的操作将被跳过,因此second不会被打印。 -
请求
/api/discussions/${discussion.id}/posts?skip=${skip}&limit=${limit}返回的结果中的数据与newPosts中的数据没有匹配项,这意味着没有新的帖子需要加载。在这种情况下,setNewPosts的操作将被跳过,因此second不会被打印。 -
setIsLoading(false)在try块之前被调用了,这可能是因为在try块中的异步操作发生异常时,finally块中的代码先于try块中的代码执行。这将导致isLoading的状态在try块中被设置为false,而不是在请求完成后被设置为false。这样一来,second将不会被打印。
通过检查以上情况,你可以确定为什么会出现 first 打印了但是 second 没有打印的情况,并进行相应的修复
原文地址: https://www.cveoy.top/t/topic/iPKz 著作权归作者所有。请勿转载和采集!