我有一个搜索框,可以复制和粘贴来自Excel的列。我解析输入并生成条目的数组。
然后,我正在映射这些条目,并使用每个项目调用自定义钩子,从我的graphql
端点获取一些数据。
例如:
搜索框提供了3个条目:
["D38999/26", "LJT06RE25-61PA", "D38999/46FJ61AA"]
fetchData
函数将其中之一作为查询参数接收。当前,此过程将返回3个单独的对象,如下所示:
{query: "D38999/26", cables: Array(35)}
{query: "LJT06RE25-61PA", cables: Array(1)}
{query: "D38999/46FJ61AA", cables: Array(1)}
如何设置一个React Hook,以便允许我将每个对象作为对象数组附加到result
状态中?
我的最终目标是获得这样的一个对象数组:
[
{query: "D38999/26", cables: Array(35)},
{query: "LJT06RE25-61PA", cables: Array(1)},
{query: "D38999/46FJ61AA", cables: Array(1)}
]
这是我当前使用的自定义钩子来解析我的API端点
const useCableMatch = () => {
const [result, setResult] = useState([]);
const [isLoading, setIsLoading] = useState(false);
const [isError, setIsError] = useState(false);
const client = useApolloClient();
const fetchData = async query => {
setIsError(false);
setIsLoading(true);
try {
const { data } = await client.query({
query: GET_VALID_CABLE,
variables: { pn: `%${query}%` },
});
const response = { query, ...data };
console.log('response:', response);
setResult(response);
} catch (error) {
setIsError(true);
}
setIsLoading(false);
};
return [{ result, isLoading, isError }, fetchData];
};
目前setResult
的设置仅返回来自响应的单个对象。我希望返回一个数组,其中包含每个生成的对象附加到现有对象数组中。
setResult([...result, response])
- AronNeewartuseState
的调用中一样,任何副作用必须包装在对useEffect
的调用中。或者只需使用类组件。 - Jared Smith