【问题标题】:Can't use navigation.dispatch() inside useEffect不能在 useEffect 中使用 navigation.dispatch()
【发布时间】:2020-10-21 20:19:13
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • some 是什么?您是否正在登录屏幕尝试重置为登录屏幕?
  • 啊,这没什么,我尝试使用钩子而不是空的 [ ] 来希望防止重新渲染 :))。但编辑了。我需要防止用户在登录页面上按下返回按钮。
  • 这个useEffect在登录页面吗?
  • 是的,它在登录页面内

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


【解决方案1】:

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

【讨论】:

  • 没问题。继续加油!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 2021-05-11
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多