无法在useEffect中使用navigation.dispatch()

时间:2020-10-21 20:19:13

标签: react-native react-hooks react-navigation

我试图防止用户使用后退按钮,我在文档中找到了解决方案 正如他们所说,我必须使用以下代码:

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

所以我在useEffect内部使用了它,以便将其应用于页面加载。

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

但是我收到此错误,该应用无法正常运行:

警告:超过最大更新深度。当组件在useEffect中调用setState时会发生这种情况,但useEffect要么没有依赖项数组,要么在每个渲染器上都有一个依赖项更改。

1 个答案:

答案 0 :(得分:1)

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