这是重现问题的 Codesandbox 链接: https ://codesandbox.io/s/boring-nash-svcj7?file=/src/index.js
我有一个奇怪的问题。我有一个非常简单的设置 Apollo 设置,仅用于测试目的。它是这样的:
function App() {
return (
<ApolloProvider client={client}>
<Main />
</ApolloProvider>
);
}
它只是一个简单的 ApolloProvider,为 App 组件提供客户端。App 组件只有一行。
const Main = () => {
const [data, setData] = useState();
setData(1);
return <div>Test</div>;
};
现在,当我刷新页面时,出现此错误:
Too many re-renders. React limits the number of renders to prevent an infinite loop.
有谁知道这里发生了什么?
为什么我不能在我的组件内部使用一个简单的钩子?
这是完整的代码:
import React, { useState } from "react";
import ReactDOM from "react-dom";
import ApolloClient from "apollo-client";
import { InMemoryCache } from "apollo-cache-inmemory";
import { HttpLink } from "apollo-link-http";
import { ApolloProvider } from "@apollo/react-hooks";
const client = new ApolloClient({
link: new HttpLink({
uri: "https://api.graph.cool/simple/v1/swapi"
}),
cache: new InMemoryCache()
});
const Main = () => {
const [data, setData] = useState();
setData(1);
return <div>Test</div>;
};
function App() {
return (
<ApolloProvider client={client}>
<Main />
</ApolloProvider>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
有一个我正在关注的例子,它确实有效,所以我不确定为什么我的例子不是。