如何解决如何将数组从 GraphQL 映射到 ResourceList 元素?
我进行了 GQL 查询,在该查询中我将所有产品的数据作为数组中的对象接收。这是其中一个对象:
利用这些数据,我尝试将每个单独的产品映射到 <ResourceItem>
中的 <ResourceList>
元素。但是,我正在努力正确加载此加载项 - 登录时我在屏幕或控制台中什么也没有。谁能帮我一把?
这是我的 GQL 查询:
...这是我执行此操作的函数:
// Retrieve all products
const GetProductList = ({ onProductSelected }) => {
// Execute GET_PRODUCTS GQL Query
const { loading,error,data } = useQuery(GET_PRODUCTS);
// Loading & error management
if (loading) return 'Loading...'
if (error) return `Error - ${error}`
// Return dropdown menu of all products
return (
<div>
<Card>
<ResourceList
resourceName={{singular: 'product',plural: 'products'}}
items={() => data.products.edges.map((product) => [
{
id: product.node.id,title: product.node.title
},])}
renderItem={(item) => {
const { id,title } = item;
return (
<ResourceItem id={id} accessibilityLabel={`View details for ${title}`}>
<h3><TextStyle variation="strong">{title}</TextStyle></h3>
</ResourceItem>
)
}}
>
</ResourceList>
</Card>
</div>
)
}
谢谢!
(PS 如果有帮助,这是我大致遵循的示例:Resource List Example
解决方法
您不需要映射,ResourceList
会为您处理映射,只需传入您要映射的 data.products.edge
。
应该是这样的
<ResourceList
resourceName={{singular: 'product',plural: 'products'}}
items={data.products.edges}
renderItem={(item) => {
const { id,title } = item;
return (
<ResourceItem id={id} accessibilityLabel={`View details for ${title}`}>
<h3><TextStyle variation="strong">{title}</TextStyle></h3>
</ResourceItem>
)
}}
>
</ResourceList>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。