我试图创建一个简单的组件,从Apollo GraphQL服务器(查询)返回我的所有组织。我想从一个上下文状态呈现所有这些组织,在这个上下文状态下,在组件挂载(由useEffect挂钩处理)之后,可以使用分派方法放置这些组织。
如果状态结果(organizations数组)为空,useEffect钩子应该调用函数getOrganizations,然后调用自定义钩子useGetOrganizations。UseGetOrganizations钩子使用@apollo/react钩子中的useQuery。
不幸的是,这不起作用,我的控制台说,“/src/components/organizations/organizations.js第32:13行:React Hook“usegetorganizations”在函数“getorganizations”中被调用,它既不是React函数组件,也不是自定义React Hook函数React Hook/rules of Hook”
求你了,你能帮我吗?
import React, { useEffect } from 'react';
import { useQuery } from '@apollo/react-hooks';
import ORGANIZATIONS_QUERY from './OrganizationsGraphql';
import { Store } from '../../store/Store';
const Organizations = props => {
const { state, dispatch } = React.useContext(Store);
useEffect(() => {
getOrganizations();
});
const useGetOrganisations = async () => {
const { data, loading, error } = useQuery(ORGANISATIONS_QUERY);
if (loading) {
return 'Loading...';
}
if (error) {
return `Error! ${error.message}`;
}
return dispatch({
type: 'FETCH_ORGANISATIONS',
payload: data.organizations,
});
};
const getOrganizations = () => {
if (state.organizations.length === 0) {
useGetOrganizations();
}
};
return (
<div>
<h1>All organisations</h1>
{console.log(state.organizations)}
</div>
);
};
export default Organizations;
Try:(使用refetch)
const { data, loading, error, refetch } = useQuery(ORGANISATIONS_QUERY);
const useGetOrganisations = async () => {
if (loading) {
return 'Loading...';
}
if (error) {
return `Error! ${error.message}`;
}
return dispatch({
type: 'FETCH_ORGANISATIONS',
payload: data.organizations,
});
};
有人能解释一下我做错了什么吗?我有一个react功能组件,在其中我使用useEffect钩子从服务器获取一些数据,并将这些数据放入状态值。在获取数据之后,在同一个useHook中,我需要使用该状态值,但由于某些原因,该值是明确的。看看我的示例,console有一个空字符串,但在浏览器上我可以看到该值。 链接到codesandbox。
如何使用钩子(或任何其他钩子)来复制? 在传统的类组件中,我将执行以下操作: 使用hook: (完整示例:https://codesandbox.io/s/2oo7zqzx1n) 这不起作用,因为在中返回的“cleanup”函数捕获装载期间的道具,而不是卸载期间的道具状态。 如何在不运行函数体(或清除)的情况下对每个道具更改进行清理? 一个类似的问题并没有涉及获得最新道具的部分。 文件状态为: 如
更新状态的正确方式是什么,是一个嵌套对象,在与钩子反应? 如何使用将更新为(附加字段)? (更改值)?
我的结构如下: 我试图用新数据更新指标: 现在我得到的是以下错误: 我正在努力找出为什么状态是空的,我如何甚至控制台日志它的值来调试问题。
问题内容: 我正在学习有关如何使用钩子注册事件的Udemy课程,讲师给出了以下代码: 现在效果很好,但我不认为这是正确的方法。原因是,如果我理解正确,则每次重新渲染时,事件都会每次都在注册和注销,并且我根本认为这样做不是正确的方法。 所以我对下面的钩子做了一些修改 通过使用一个空数组作为第二个参数,使组件只运行一次效果,即模仿。当我尝试结果时,奇怪的是,在我键入的每个键上都没有附加,而是被覆盖了。
获取以下错误。请帮忙。第9:36行:不能在类组件中调用React钩子“useContext”。必须在React函数组件或自定义React钩子函数中调用React钩子。React钩子/钩子规则第9:47行:“AccountContext”未定义未定义未定义第126:37行:“switchToSignup”未定义未定义未定义 搜索关键字以了解有关每个错误的更多信息。