React Native Shopify StoreFront API GraphQL API 无限加载产品 fetchMore 错误
Posted
技术标签:
【中文标题】React Native Shopify StoreFront API GraphQL API 无限加载产品 fetchMore 错误【英文标题】:React Native Shopify StoreFront API GraphQL API Infinite Loading Products fetchMore error 【发布时间】:2020-10-11 13:17:47 【问题描述】:我正在使用来自 apollo-boost 的 ApolloClient 与 Shopify StoreFront API 连接,使用 graphql-tag 来构建我的查询并使用 Query React Hook 将产品无限加载到 FlatList 中。
当我尝试将对象的值作为道具传递给产品组件时,我能够根据返回值加载组件,但最多只能加载大约 25 个产品对象(使用 useQuery 或使用 fetchMore)我得到了这个错误:null is not an object (evaluating: 'item.node.variants.edges[0].node.image.transformedSrc)
25 个产品后
虽然我能够记录返回的产品值,但我仍然收到错误。
const ProductSize = 8
const loading, error, data, fetchMore = useQuery(PRODUCTS,
variables: productSize ,
notifyOnNetworkStatusChange: true,
)
return (
loading || !data.products ? <ActivityIndicator animating=true color=Colors.tintColor style=styles.listing /> :
<FlatList
data=data.products.edges || []
style=styles.listing
//onRefresh=() => refetch()
ListEmptyComponent=listEmptyComponent
renderItem=( item ) =>
<Product
key=item.node.id
title=item.node.title
image=item.node.variants.edges[0].node.image.transformedSrc
price=item.node.variants.edges[0].node.priceV2.amount/>
keyExtractor=item => item.node.id
numColumns=2
onEndReachedThreshold=1
onEndReached=() =>
fetchMore(
query: PRODUCTS,
notifyOnNetworkStatusChange: true,
variables:
productSize,
cursor: data.products.edges[data.products.edges.length - 1].cursor
,
updateQuery: (previousResult, fetchMoreResult ) =>
console.log(previousResult.products.edges[25])
console.log(fetchMoreResult.products.edges[1])
const newEdges = fetchMoreResult.products.edges;
const pageInfo = fetchMoreResult.products.pageInfo;
return newEdges.length
?
//const newProducts = fetchMoreResult.products.edges.filter(item => item.node.variants.edges[0].node.image.transformedSrc)
products:
__typename: previousResult.products.__typename,
edges: [...previousResult.products.edges, ...newEdges],
pageInfo,
: previousResult;
)
/>
)
【问题讨论】:
【参考方案1】:这是一个老问题,所以你可能已经想通了:
产品中不需要图片,因此可能存在没有图片的产品,您需要在使用图片之前检查图片是否存在。
【讨论】:
以上是关于React Native Shopify StoreFront API GraphQL API 无限加载产品 fetchMore 错误的主要内容,如果未能解决你的问题,请参考以下文章
遵循 Shopify 的 React 和 Node 教程时出现未处理的运行时错误
带有 reactjs 和 nodejs 的 Shopify 应用程序没有 nextjs?
在 Heroku 上开发时,使用 GraphQL 的 Shopify 应用程序无法运行
react-native init 指定 react 版本和 react-native 版本
添加 React-Native-Camera 和 React-Native-Push-Notification 后无法构建 React Native