尝试使用 GraphQL 变量和 Next JS 过滤数据。如何将我的状态传递给 GraphQL 变量 "name" ?
handleSelectedFilter 将根据所选选项更新过滤器状态。我期望过滤器状态的值传递给“名称”变量。
请记住,我们不能在 Next js getStaticProps 函数中使用反应钩子,尝试过状态管理,自定义钩子 ..etc 不适用于 Next JS。
非常感谢任何形式的帮助。提前致谢。
export async function getStaticProps() {
const { data, errors } = await client.query({
query: GET_LISTINGS,
variables: {
uri: '/listing/',
name: filter?.city
}
})
return {
props: {
data: data || [],
},
revalidate: 1
}
}
const listings = ({ data }) => {
const [filter, setFilter] = useState({
city: '',
area: '',
type: '',
})
const handleSelectedFilter = e => {
setFilter({ ...filter, [e.target.name]: e.target.value })
}
}
export default listings
下面的 GrpahQL 架构
export const GET_LISTINGS = gql`
query GET_LISTINGS( $name: String) {
listingCategoriesL: listingCategories(where: {name: [$name]}) {
nodes {
id
name
listings {
edges {
node {
id
title
}
}
}
}
}
}