首页 > 解决方案 > 不能在 useEffect 中使用 navigation.dispatch()

问题描述

我试图阻止用户使用后退按钮,正如他们所说,我在

navigation.dispatch(
    CommonActions.reset({
      index: 1,
      routes: [
        { name: 'Login' },
  
      ],
    })
  );

所以我在里面使用它useEffect以便在页面加载时应用它。

useEffect(()=>{
  navigation.dispatch(
    CommonActions.reset({
      index: 1,
      routes: [
        { name: 'Login' },
  
      ],
    })
  );
},[])

但是我收到了这个错误,并且应用程序无法正常运行:

警告:已超出最大更新深度。当组件在 useEffect 中调用 setState 时,可能会发生这种情况,但 useEffect 要么没有依赖数组,要么每次渲染时依赖项之一发生变化。

标签: react-nativereact-hooksreact-navigation

解决方案


问题是在组件挂载时调用了带有 [] 的 useEffect。所以组件安装然后你告诉它重置导航到登录页面(同一页面),以便重新安装登录并再次调用 useEffect。等等等等。因此,您需要做的是,发送您登录的组件需要进行重置并将其从登录页面内的 useEffect 中删除。


推荐阅读