Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Next.js-访问同一路由时,useEffect不会触发_Javascript_Reactjs_Next.js - Fatal编程技术网

Javascript Next.js-访问同一路由时,useEffect不会触发

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正常运行 但是,如

我在Next.js v10中使用useffect实现了在访问屏幕时运行的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我只能提到一个人,所以我再次写下它。现在它工作得很好。非常感谢。您能否详细说明一下每次都将其更改为发出网络请求