Reactjs useLazyQuery的Fetch more函数未定义
我用阿波罗用懒钩。我的目标是在“获取更多”按钮单击中使用它。但是,当我尝试使用它时,fetchMore函数是未定义的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
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
不,它只是重命名…在一个组件中使用多个钩子时可用恩,好的。这很有道理。我以为你必须用关键词来重命名它。那么我应该删除我的答案吗?我是新手。