错误警告:React 检测到身份验证页面调用的钩子顺序发生了变化。如果不修复,这将导致错误和错误。有关更多信息,请阅读钩子规则:https://reactjs.org/link/rules-of-hooks
代码:
import React, { useContext, useEffect, useState } from 'react';
import { Keyboard } from 'react-native';
import { useNavigation } from '@react-navigation/native';
import { getCredentials } from '../util/Storage';
import { OrderContext } from '../OrderContext';
import { UserContext } from '../UserContext';
const AuthPage = ({ navigation }) => {
const userContext = useContext(UserContext);
const orderContext = useContext(OrderContext);
const [isKeyboardVisible, setKeyboardVisibile] = useState(false);
useEffect(() => {
const getCreds = async () => {
const c = await getCredentials();
if (c) {
navigation.replace('Home' : 'StartWizard');
}
};
getCreds();
}, []);
const keyboardDidShow = () => {
setKeyboardVisibile(true);
};
const keyboardDidHide = () => {
setKeyboardVisibile(false);
};
useEffect(() => {
Keyboard.addListener('keyboardDidShow', keyboardDidShow);
Keyboard.addListener('keyboardDidHide', keyboardDidHide);
return () => {
Keyboard.removeListener('keyboardDidShow', keyboardDidShow);
Keyboard.removeListener('keyboardDidHide', keyboardDidHide);
};
}, []);
if (!global.navigation) {
global.navigation = useNavigation();
}
return (
<AuthView ... />
}}
/>
);
};
const Auth = ({ navigation }) => <AuthPage navigation={navigation} />;
export default Auth;
为什么订单发生变化,我如何纠正这种行为?
if (!global.navigation) {
global.navigation = useNavigation();
}
永远不要有条件地调用钩子。这是钩子的规则
React总是期望调用相同的钩子,不管你的变量有什么值。
在这种情况下,您有条件地调用< code>useNavigation()挂钩,这完全打乱了React想要的内容。
要修复它,只需将钩子返回的值存储在临时变量中:
const currentNavigation = useNavigation();
if (!global.navigation) {
global.navigation = currentNavigation;
}
或者如果没有问题,无条件覆盖global.navigation
global.navigation = useNavigation();
我强烈建议阅读钩子的规则,这样你就可以避免将来出现这样的错误。
我正努力让你去工作。以下是功能组件: 我称之为: 我得到一个错误,如下所示: 错误:无效的钩子调用。钩子只能在函数组件的主体内部调用。发生这种情况的原因如下:1。React和渲染器(如React DOM)2的版本可能不匹配。你可能违反了Hooks 3的规则。同一应用程序中可能有多个React副本。 我已经调试并确认我使用的是单一版本。也许我使用状态钩子不正确? 这里是我调用自定义钩子的地方:
我的应用程序一直在工作,直到最后一次提交。 现在,它在< code>npm start上工作正常,但是在使用< code>npm run builder部署它之后,我遇到运行时错误: 不变冲突:缩小的反应错误# 321;访问https://reactjs.org/docs/error-decoder.html?invariant=321获得完整的消息,或者使用非精简的开发环境获得完整的错误和其他有
我得到以下错误,不确定我在箭头函数内实例化 react 钩子时做错了什么: 错误:挂接调用无效。钩子只能在函数组件的主体内部调用。这可能是由于以下原因之一: 您可能有不匹配的React和渲染器版本(如React DOM)。 您可能违反了钩子的规则。 同一应用程序中可能有多个React副本。请参阅https://reactjs.org/link/invalid-hook-call有关如何调试和修复此
我有两种不同类型的用户;让我们称它们为和。 我得到了容器中的user type的值,该容器具有实例: 现在我想映射这个值(使用functor实例),将包含的< code>BasicUser转换为< code>EnrichedUser用户,保留在容器中: 然而,< code>enrichUser并不返回< code > enrich user ,而是返回< code>OptionT[Future,e
在使用PostgreSQL数据库启动sprint boot应用程序时出现错误,我试图找到一个解决方案,但到目前为止还没有找到。 这里有个错误: 2018-03-29 17:48:17.945警告13508--[main]ationConfigEmbeddedWebApplicationContext:上下文初始化过程中遇到异常-取消刷新尝试:org.springFramework.Beans.Fa
我想知道为什么我的论点似乎在我的GraphQL解析器内切换。我用的是快速图形。 一个解析器的示例: 我已经写了文件中出现的参数名称:http://graphql.org/learn/execution/ 但当我调试和检查对象时,args对象似乎是第一个,上下文是第二个,父/根是第三个。 家长: args: 上下文: 某些服务器代码: 我的根解析器: 模式: