【发布时间】:2021-03-30 07:49:15
【问题描述】:
我正在使用 react hook 而不是基于类的组件,但是当我从 graphql API 获取数据时它没有更新状态。
这里是我的代码:
import React, { useEffect, useState } from 'react';
import client from '../gqlClient';
import { gql, ApolloClient, InMemoryCache } from '@apollo/client';
const client = new ApolloClient({
uri: 'http://localhost:8000/graphql/',
cache: new InMemoryCache(),
});
function EmpTable() {
const [employee, setEmployee] = useState({});
useEffect(() => {
client
.query({
query: gql`
query {
employees {
name
}
}
`
})
.then(result => {
setEmployee({result});
console.log(employee);
});
}, [])
return (
<div>return something</div>
)
};
export default EmpTable;
当我打印employee 时,它只打印初始值。
但是当打印结果时,控制台会显示我从 API 获得的所有数据。
我让 useEffect 仅在页面/组件加载后运行,但它不起作用。
谁能帮我解决这个问题?
【问题讨论】:
-
不,和这个不一样,谢谢
-
@pythonerdude Do
console.log({result});你只是设置了员工,但你不能使用员工,因为那是 stale closure
标签: reactjs react-hooks apollo-client use-effect use-state