react-native - 不能在 useEffect 中使用 navigation.dispatch()
问题描述
我试图阻止用户使用后退按钮,正如他们所说,我在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 要么没有依赖数组,要么每次渲染时依赖项之一发生变化。
解决方案
问题是在组件挂载时调用了带有 [] 的 useEffect。所以组件安装然后你告诉它重置导航到登录页面(同一页面),以便重新安装登录并再次调用 useEffect。等等等等。因此,您需要做的是,发送您登录的组件需要进行重置并将其从登录页面内的 useEffect 中删除。
推荐阅读
- sql - Bigquery 选择 logtime 低于其他表 logtime 的 min(value) 的行
- python - 使用 selenium 和 python 选择动态元素
- python - 无法使用 sqlalchemy 从烧瓶数据库中存储和获取图像
- spring - Spring如何在没有spring security的情况下维护登录用户
- c - time_t 和 LONG_MAX:ctime() 和 difftime() 的问题
- python - Pandas 使用四分位数删除带有 Groupby 两列的行
- javascript - 数组未在 javascript 中作为参数传递。(类型错误:无法读取未定义的属性“长度”)
- angular - 如何将材质输入与嵌套的 FormControl 绑定?
- symfony - 将 sylius 商店域从基于区域设置更改为基于国家代码
- android - 颤振:按下手机返回按钮时,如何关闭键盘和页面