GatsbyJS中Prismic.io数据查询正常但页面无法输出部分数据的问题
解决Gatsby + Prismic无法渲染部分数据的问题
我之前用Prismic做Gatsby内容源时也碰到过一模一样的情况——GraphQL查询明明能拿到正确数据,但页面就是渲染不出来,给你几个实用的排查方向:
先确认实际拿到的数据结构
在组件里先把节点数据打印出来看看,比如加一行:console.log("当前节点数据:", node.data)打开浏览器控制台,仔细检查
product_price、product_name这些字段是不是真的有值,有没有嵌套层级不对的情况——有时候Prismic的字段可能会有额外包装,别漏看了。检查遍历逻辑是否正确
要确保你正确遍历了allPrismicDocument.edges数组,比如标准的遍历写法应该是这样的:{data.allPrismicDocument.edges.map(({ node }) => ( <div key={node.id} className="product-card"> <h3>{node.data.product_name?.text}</h3> <p>价格: {node.data.product_price}</p> <p>{node.data.product_description?.text}</p> </div> ))}这里用了可选链
?.避免空字段报错,同时要保证node是从每个edge里正确解构出来的,别搞混了层级。处理字段类型的兼容性
如果product_price是数字类型,直接渲染偶尔会有隐性问题,试试转成字符串再输出:<p>价格: {String(node.data.product_price)}</p>或者用模板字符串包裹:
<p>价格: {`${node.data.product_price}`}</p>清除Gatsby缓存重试
Gatsby的缓存有时候会导致数据不同步,试试执行以下命令清理缓存后重启开发服务:gatsby clean gatsby develop排查条件渲染的坑
如果你用了类似{node.data.product_price && <p>{node.data.product_price}</p>}的条件渲染,当product_price是0的时候,这个逻辑会把它当成“假值”不渲染。这时候可以改成明确判断是否存在:{node.data.product_price !== undefined && <p>{node.data.product_price}</p>}
内容的提问来源于stack exchange,提问作者Martin Conde
相关产品推荐
相关产品推荐

