所以我现在有两个定制的钩子。一个返回团队ID数组,另一个接受一个团队ID作为参数并返回团队的所有数据。
我想循环遍历团队ID数组,并将每个ID传递给获取数据的钩子。但是我得到了一个eslint错误**“React Hooks必须在每个组件渲染中以完全相同的顺序调用。”**。有谁知道如何重构我的代码,这样我就可以避免这个警告?我知道你不应该在循环内部调用React钩子,但不知道如何完成我需要的。
我也试过将两个钩子组合成一个钩子,但这给了我同样的错误,因为在useGetTeamData中,我需要利用apollo框架中的UseQuery钩子,所以我将再次在循环中调用钩子。
这是我的父组件,它调用这两个钩子
import * as React from "react";
import { useGetTeamIds, useGetTeamData } from "../../hooks";
const teamIds = useGetTeamIds(); // ex: ["21", "25", "55", "63"];
const collection_of_teamData = [];
for (const id of teamIds) {
collection_of_teamData.push(useGetTeamData(id));
}
// Do something with collection of team data here
1条答案
按热度按时间5lhxktic1#
既然你已经指出你不能重构
useGetTeamData()
来接受多个id
,一个选择是声明一个子组件,它接受一个id
作为prop,然后根据需要在顶层调用useGetTeamData()
。这仍然保持父级中集合的控制,但将单个元素的控制委托给子级。