如果参数为 null,则不 运行 查询
Don't run query if parameter is null
关于此 GraphQL 查询,我想寻求您的指导。
我希望它检查查询参数是否为 null 并且不触发查询。
目前尽管查询为空,但它检索了所有数据,这意味着我们使用了一些不必要的计算能力。
const search_reviews= gql`
query SearchReviews ($my_query: String) {
reviews (filters: {or: [{body: {contains: $my_query} }, {title: {contains: $my_query}}]}) {
data{
id
attributes{
title
rating
body
categories{
data{
id
attributes
{
name
}
}
}
}
}
}
}
`
以及来自 React 的代码
const [ first, setFirst ] = useState(false)
const [ query, setQuery] = useState("")
const { loading, error, data } = useQuery(search_reviews, {variables: {my_query: query}})
if (loading) return <p>Loading data...</p>
if (error) return <p>Error fetching data</p>
console.log(data)
这是答案:
const { loading, error, data } = useQuery(search_reviews, {skip: !first,variables: {my_query: query}})
您可以使用 useQuery
挂钩选项的 skip
键来实现此目的:
const { data, loading, error } = useQuery(SEARCH_REVIEWS, {
variables: /* snip */,
skip: !param,
});
关于此 GraphQL 查询,我想寻求您的指导。 我希望它检查查询参数是否为 null 并且不触发查询。 目前尽管查询为空,但它检索了所有数据,这意味着我们使用了一些不必要的计算能力。
const search_reviews= gql`
query SearchReviews ($my_query: String) {
reviews (filters: {or: [{body: {contains: $my_query} }, {title: {contains: $my_query}}]}) {
data{
id
attributes{
title
rating
body
categories{
data{
id
attributes
{
name
}
}
}
}
}
}
}
`
以及来自 React 的代码
const [ first, setFirst ] = useState(false)
const [ query, setQuery] = useState("")
const { loading, error, data } = useQuery(search_reviews, {variables: {my_query: query}})
if (loading) return <p>Loading data...</p>
if (error) return <p>Error fetching data</p>
console.log(data)
这是答案:
const { loading, error, data } = useQuery(search_reviews, {skip: !first,variables: {my_query: query}})
您可以使用 useQuery
挂钩选项的 skip
键来实现此目的:
const { data, loading, error } = useQuery(SEARCH_REVIEWS, {
variables: /* snip */,
skip: !param,
});