我有一个错误,当我刷新我的页面(在本地主机上)时,我使用基于 Neo4J 数据库的 GrandStack React 接口,我想创建一个带有数据过滤器的表。我使用了在这里找到的代码(CodeSandBox 上的完整代码就在这里)
在我使用我的数据之前它工作得很好(使用 ApolloClient)
我在开头声明了以下查询:
const GET_INSTANCE = gql`
{
finalTab {
classObject
object
classSubject
subject
relation
}
}
`
然后我定义const 数据并返回下表
const { loading, error, data } = useQuery(GET_INSTANCE)
return (
<Paper>
{loading && !error && <p>Loading...</p>}
{error && !loading && <p>Error</p>}
{data && !loading && !error && (
<Table
columns={columns}
data={React.useMemo(() => data.finalTab, [])}
/>
)}
</Paper>
)
它确实可以工作并编译,但是一旦我刷新页面,它就会显示以下错误:
未处理的拒绝(错误):渲染的钩子比上一次渲染期间更多。
它指向这一行:data={React.useMemo(() => data.finalTab, [])}
编辑:我还尝试在 return 语句之前声明数据,如下所示:
const { loading, error, data } = useQuery(GET_INSTANCE)
if (error) return <p>error</p>
if (loading) return <p>Loading...</p>
const instances = data.finalTab
const data1 = React.useMemo(() => instances, [])
然后只返回表格:
return <Table columns={columns} data={data1} />
但我仍然收到错误
而且我似乎无法理解我做错了什么,有人可以帮忙吗?非常感谢