Javascript Next.js-访问同一路由时,useEffect不会触发
我在Next.js v10中使用useffect实现了在访问屏幕时运行的API 代码编写如下Javascript Next.js-访问同一路由时,useEffect不会触发,javascript,reactjs,next.js,Javascript,Reactjs,Next.js,我在Next.js v10中使用useffect实现了在访问屏幕时运行的API 代码编写如下 ... const fetchAPI = async () => { try { await axios.get({ .... }) } catch (e) { console.error(e) } } React.useEffect(() => { fetchAPI() }, []) ... 当我第一次访问时,useEffect的API正常运行 但是,如
...
const fetchAPI = async () => {
try {
await axios.get({ .... })
} catch (e) {
console.error(e)
}
}
React.useEffect(() => {
fetchAPI()
}, [])
...
当我第一次访问时,useEffect的API正常运行
但是,如果我转到另一个屏幕,然后再次访问该屏幕,useEffect将不起作用
这与其他屏幕上的useEffect相同
每次访问屏幕时是否可以运行useEffect
当前,依赖项设置为[]
,但如果完全删除[]
,应用程序将停止
哪种解决方案对我有帮助
不管我怎么看,我都找不到这样的问题
我解决了那个问题,并将答案写在下面。我解决了那个问题,并将答案写在下面。 问题出现在
缓存中
如果数据保留在缓存中,并且剩余的数据按原样使用,则先前实现的方法不会请求新服务器
因此,即使您重新访问该页面,也会显示相同的数据,并且“网络”选项卡中没有任何更改
因此我意识到了这一点,并将其更改为在每次访问页面时发出网络请求,而不考虑缓存。
它工作得很好
很抱歉问了这么愚蠢的问题
谢谢大家的回答 听起来屏幕组件没有在导航之间卸载。您的useffect
将仅在装载时运行。当访问新屏幕时,导航库不一定卸载组件。显示你的导航组件。这实际上取决于你的导航如何工作,如果它隐藏组件-你的useEffect将不起作用,如果它重新呈现组件-它将起作用。如果它以某种方式隐藏了它,您应该有一些道具或状态,比如说“hidden:true”,这样您就可以对其使用效果that@Adam哦,这是我的错。这个问题是“缓存”。以前,如果缓存中有数据,则在不请求新服务器的情况下显示数据。我意识到了这一点,并将其更改为无条件地进行网络请求,而不考虑缓存。@NikitaChayka我只能提到一个人,所以我再次写下它。现在它工作得很好。非常感谢。您能否详细说明一下每次都将其更改为发出网络请求