【问题标题】:Deconstructing values nextjs: ReferenceError: Cannot access 'XXX' before initialization解构值 nextjs:ReferenceError:初始化前无法访问“XXX”
【发布时间】:2019-12-29 10:33:56
【问题描述】:

我正在将 Apollo Client 与 Nextjs 一起使用,并希望解构值以便于阅读。

我正在尝试这样做 insisde pages/index.js

import { useQuery } from '~/lib/apollo'
return {
    const { data: { allAwards = []} = {} } = useQuery(allAwards) //ReferenceError: Cannot access 'allAwards' before initialization
    .....
}

lib/阿波罗

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: []
  }
}

【问题讨论】:

    标签: javascript reactjs apollo next.js


    【解决方案1】:

    您正在使用解构赋值从useQuery 挂钩返回的值中声明一个名为allAwards 的变量——然后您尝试将相同的变量传递给挂钩。如错误所示,您不能在声明之前使用变量。

    const { data: { allAwards = []} = {} } = useQuery(allAwards)
                    ^ this                            ^ same as this
    

    首先,没有理由将查询结果用作useQuery 中的第一个参数——这个值应该始终是一个 DocumentNode 对象(这是使用gql 标记模板时返回的内容)。也许你在某处有命名冲突?

    【讨论】:

    • 史诗般的脸掌时刻有丹尼尔。感谢您抽出宝贵时间来纠正这个问题,哈哈
    猜你喜欢
    • 1970-01-01
    • 2020-08-25
    • 2020-09-08
    • 2021-09-29
    • 2019-10-12
    • 2020-11-30
    • 2021-11-02
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多