Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs useLazyQuery的Fetch more函数未定义_Reactjs_Graphql_React Apollo_React Apollo Hooks - Fatal编程技术网

Reactjs useLazyQuery的Fetch more函数未定义

Reactjs useLazyQuery的Fetch more函数未定义,reactjs,graphql,react-apollo,react-apollo-hooks,Reactjs,Graphql,React Apollo,React Apollo Hooks,我用阿波罗用懒钩。我的目标是在“获取更多”按钮单击中使用它。但是,当我尝试使用它时,fetchMore函数是未定义的 useEffect(()=>{ getMyData() },[]) 以下是对它的呼吁: const [getMyData,{ loading, data, fetchMore }] = useLazyQuery( myQuery, { notifyOnNetworkStatusChange: true, fetchP

我用阿波罗用懒钩。我的目标是在“获取更多”按钮单击中使用它。但是,当我尝试使用它时,fetchMore函数是未定义的

  useEffect(()=>{
    getMyData()
  },[])
以下是对它的呼吁:

const [getMyData,{ loading, data, fetchMore }] = useLazyQuery(
    myQuery,
    {
      notifyOnNetworkStatusChange: true,
      fetchPolicy: 'network-only',
      variables: {}
})
即使我在组件就绪时运行lazy,fetchmore仍然未定义

  useEffect(()=>{
    getMyData()
  },[])
问题是为什么它没有定义

“阿波罗客户端”:“^2.6.4”,“反应阿波罗”:“^3.1.3”


我对反应也很陌生,但据我所知,你必须使用refetch,然后给它取一个这样的名字:

const [getMyData,{ loading, data, refetch: fetchMore }] = useLazyQuery...
您可以对数据和加载执行相同的操作

const [getMyData,{ loading: myLoading, data: myData, refetch: fetchMore }] = useLazyQuery...

您需要首先运行
loadItem
。我的案例也会按需加载,因为我使用的是SSR

这是我的解决方法,请检查
fetchMore
是否未定义以做出决定

函数NewItemListingPagination({
首字母项目,
首字母页,
初始限制,
初始总数,
类名
}:ComponentPropTypes){
const{t}=usetransformation(['homepage','common'])
const page=useRef(initialPage)
const[loadItem,{loading,data,fetchMore}]=useLazyQuery(FEED\u NEW\u ITEM)
异步函数loadMore():Promise{
const newPage=page.current+1
常量偏移=(新页-1)*初始限制
page.current=newPage
如果(!fetchMore){
加载项({
变量:{
限额:12,
抵消
}
})
}否则{
费特莫尔({
查询:输入新项目,
变量:{
限额:12,
抵消
},
updateQuery:(上一个结果,{fetchMoreResult})=>{
log('dddd',previousResult,fetchMoreResult)
返回以前的结果
}
})
}
}
const items=!data?initialItems:initialItems.concat(data.feed.items)
返回

注意:这段代码可能没有经过优化,我只想展示fetchMore的流程。

测试这一理论可能比编写这一理论更快question@xadm测试,更新显示如何测试这只是这个测试的一半:D…和
getmysentials
!=
getMyData
不,它只是重命名…在一个组件中使用多个钩子时可用恩,好的。这很有道理。我以为你必须用关键词来重命名它。那么我应该删除我的答案吗?我是新手。