useQueries 的启用选项
Enabled option for useQueries
我正在尝试像这样使用 useQueries
function App({ users }) {
const userQueries = useQueries(
users.map(user => {
return {
queryKey: ['user', user.id],
queryFn: () => fetchUserById(user.id),
}
})
)
}
但是,users 变量由 useQuery 提供,最初返回时未定义。这导致错误无法读取未定义的映射。我想像您一样为 useQuery 添加 enabled,但我在文档中的任何地方都看不到它。您可以像这样使用简单的 useQuery 来完成它:
// Get the user
const { data: user } = useQuery(['user', email], getUserByEmail)
const userId = user?.id
// Then get the user's projects
const { isIdle, data: projects } = useQuery(
['projects', userId],
getProjectsByUser,
{
// The query will not execute until the userId exists
enabled: !!userId,
}
)
// isIdle will be `true` until `enabled` is true and the query begins to fetch.
// It will then go to the `isLoading` stage and hopefully the `isSuccess` stage :)
基本上我想要
function App({ users }) {
const userQueries = useQueries(
users.map(user => {
return {
queryKey: ['user', user.id],
queryFn: () => fetchUserById(user.id),
enabled: !!users
}
})
)
}
如果没有用户,您可以回退到传递给 useQueries 的空数组:
function App({ users }) {
const userQueries = useQueries(
users?.map(user => {
return {
queryKey: ['user', user.id],
queryFn: () => fetchUserById(user.id),
}
}) ?? []
)
}
对于通过搜索登陆这里的人:现在支持:
const results = useQueries([
{ queryKey: ['post', 1], queryFn: getProjectsByUser, enabled: !!userId },
{ queryKey: ['post', 2], queryFn: getProjectsByUser, enabled: !!userId },
])
我正在尝试像这样使用 useQueries
function App({ users }) {
const userQueries = useQueries(
users.map(user => {
return {
queryKey: ['user', user.id],
queryFn: () => fetchUserById(user.id),
}
})
)
}
但是,users 变量由 useQuery 提供,最初返回时未定义。这导致错误无法读取未定义的映射。我想像您一样为 useQuery 添加 enabled,但我在文档中的任何地方都看不到它。您可以像这样使用简单的 useQuery 来完成它:
// Get the user
const { data: user } = useQuery(['user', email], getUserByEmail)
const userId = user?.id
// Then get the user's projects
const { isIdle, data: projects } = useQuery(
['projects', userId],
getProjectsByUser,
{
// The query will not execute until the userId exists
enabled: !!userId,
}
)
// isIdle will be `true` until `enabled` is true and the query begins to fetch.
// It will then go to the `isLoading` stage and hopefully the `isSuccess` stage :)
基本上我想要
function App({ users }) {
const userQueries = useQueries(
users.map(user => {
return {
queryKey: ['user', user.id],
queryFn: () => fetchUserById(user.id),
enabled: !!users
}
})
)
}
如果没有用户,您可以回退到传递给 useQueries 的空数组:
function App({ users }) {
const userQueries = useQueries(
users?.map(user => {
return {
queryKey: ['user', user.id],
queryFn: () => fetchUserById(user.id),
}
}) ?? []
)
}
对于通过搜索登陆这里的人:现在支持:
const results = useQueries([
{ queryKey: ['post', 1], queryFn: getProjectsByUser, enabled: !!userId },
{ queryKey: ['post', 2], queryFn: getProjectsByUser, enabled: !!userId },
])