Deconstructing values nextjs: ReferenceError: Cannot access 'XXX' before initialization
Deconstructing values nextjs: ReferenceError: Cannot access 'XXX' before initialization
我正在将 Apollo Client 与 Nextjs 结合使用,并希望解构值以便于阅读。
我正在尝试坚持这样做 pages/index.js
import { useQuery } from '~/lib/apollo'
return {
const { data: { allAwards = []} = {} } = useQuery(allAwards) //ReferenceError: Cannot access 'allAwards' before initialization
.....
}
lib/apollo
export const useQuery = function(query) {
const { enqueueSnackbar } = useSnackbar()
const { options = {} } = sortParams([...arguments])
const { loading, data: queryData, error, refetch } = HookQuery(query, {
fetchPolicy: 'cache-and-network',
...options,
})
let transformData = {}
if (queryData) transformData = new ApolloClass(queryData).start()
if (error && !options.noError) hookLogger(enqueueSnackbar, error)
return {
queryData,
error,
loading,
data: transformData,
refetch,
}
}
数据
{
data: {
allAwards: []
}
}
您正在使用解构赋值从 useQuery
挂钩返回的值中声明一个名为 allAwards
的变量——然后您尝试将同一个变量传递给该挂钩。如错误所示,您不能在变量声明之前使用它。
const { data: { allAwards = []} = {} } = useQuery(allAwards)
^ this ^ same as this
首先没有理由将查询结果用作 useQuery
中的第一个参数——这个值应该始终是一个 DocumentNode 对象(当您使用 gql
标记的模板)。也许你在某处有命名冲突?
我正在将 Apollo Client 与 Nextjs 结合使用,并希望解构值以便于阅读。
我正在尝试坚持这样做 pages/index.js
import { useQuery } from '~/lib/apollo'
return {
const { data: { allAwards = []} = {} } = useQuery(allAwards) //ReferenceError: Cannot access 'allAwards' before initialization
.....
}
lib/apollo
export const useQuery = function(query) {
const { enqueueSnackbar } = useSnackbar()
const { options = {} } = sortParams([...arguments])
const { loading, data: queryData, error, refetch } = HookQuery(query, {
fetchPolicy: 'cache-and-network',
...options,
})
let transformData = {}
if (queryData) transformData = new ApolloClass(queryData).start()
if (error && !options.noError) hookLogger(enqueueSnackbar, error)
return {
queryData,
error,
loading,
data: transformData,
refetch,
}
}
数据
{
data: {
allAwards: []
}
}
您正在使用解构赋值从 useQuery
挂钩返回的值中声明一个名为 allAwards
的变量——然后您尝试将同一个变量传递给该挂钩。如错误所示,您不能在变量声明之前使用它。
const { data: { allAwards = []} = {} } = useQuery(allAwards)
^ this ^ same as this
首先没有理由将查询结果用作 useQuery
中的第一个参数——这个值应该始终是一个 DocumentNode 对象(当您使用 gql
标记的模板)。也许你在某处有命名冲突?