如何从特定类型的反应查询 "useQuery" 挂钩中获取数据
How to get data from react query "useQuery" hook in a specific type
当我们从 useQuery 钩子中获取数据时,我需要先将数据解析为特定类型 return 给用户。我想要来自 useQuery 挂钩的 return 的数据应该是“MyType”,使用我在下面创建的解析函数。我无法找到使用我的解析函数的方法。有什么办法吗?我不想依赖数据类型的模式结构。
type MyType = {
id: number;
//some more properties
}
function parseData(arr: any[]): MyType[]{
return arr.map((obj, index)=>{
return {
id: arr.id,
//some more properties
}
})
}
const {data} = await useQuery('fetchMyData', async ()=>{
return await axios.get('https://fake-domain.com')
}
)
我认为您应该创建自己的钩子并在那里执行规范化:
const useParseData = () => {
const { data } = await useQuery('fetchMyData', async () => {
return await axios.get('https://fake-domain.com')
}
return parseData(data)
}
在需要这些数据的地方,您可以调用 const parsedData = useParseData()
我将从 api 获取响应并将其转换到 queryFn 中,然后再 return 将其转换为 react-query。无论您 return 在查询缓存中出现什么,所以:
const { data } = await useQuery('fetchMyData', async () => {
const response = await axios.get('https://fake-domain.com')
return parseData(response.data)
}
)
data
return 从 useQuery
编辑应该是 MyType[] | undefined
类型
还有很多其他选项可以进行数据转换,我在这里写过:
当我们从 useQuery 钩子中获取数据时,我需要先将数据解析为特定类型 return 给用户。我想要来自 useQuery 挂钩的 return 的数据应该是“MyType”,使用我在下面创建的解析函数。我无法找到使用我的解析函数的方法。有什么办法吗?我不想依赖数据类型的模式结构。
type MyType = {
id: number;
//some more properties
}
function parseData(arr: any[]): MyType[]{
return arr.map((obj, index)=>{
return {
id: arr.id,
//some more properties
}
})
}
const {data} = await useQuery('fetchMyData', async ()=>{
return await axios.get('https://fake-domain.com')
}
)
我认为您应该创建自己的钩子并在那里执行规范化:
const useParseData = () => {
const { data } = await useQuery('fetchMyData', async () => {
return await axios.get('https://fake-domain.com')
}
return parseData(data)
}
在需要这些数据的地方,您可以调用 const parsedData = useParseData()
我将从 api 获取响应并将其转换到 queryFn 中,然后再 return 将其转换为 react-query。无论您 return 在查询缓存中出现什么,所以:
const { data } = await useQuery('fetchMyData', async () => {
const response = await axios.get('https://fake-domain.com')
return parseData(response.data)
}
)
data
return 从 useQuery
编辑应该是 MyType[] | undefined
还有很多其他选项可以进行数据转换,我在这里写过: