背景图像数据在GraphQL Gatsby查询中无法正确传递的问题通常是由于在查询中未正确定义背景图像的字段所导致的。下面是一个解决方法的示例:
首先,在你的Gatsby项目中,创建一个GraphQL查询文件(例如,gatsby-node.js
或gatsby-config.js
)。
const path = require('path');
exports.createPages = async ({ graphql, actions }) => {
const { createPage } = actions;
const result = await graphql(`
query {
allYourData {
edges {
node {
id
backgroundImage {
publicURL
}
}
}
}
}
`);
if (result.errors) {
throw result.errors;
}
const template = path.resolve('src/templates/your-template.js');
result.data.allYourData.edges.forEach(({ node }) => {
createPage({
path: `/${node.id}`,
component: template,
context: {
id: node.id,
backgroundImage: node.backgroundImage.publicURL,
},
});
});
};
在上述代码中,我们首先定义了一个GraphQL查询,通过 allYourData
获取数据,并将其中的 backgroundImage
字段查询出来。然后,我们使用 createPage
函数创建页面,并将 backgroundImage
的 publicURL
作为页面的上下文传递。
接下来,在你的页面模板文件(src/templates/your-template.js
)中,你可以通过 pageContext
访问到传递的 backgroundImage
数据。你可以使用这个数据来设置背景图像。
import React from 'react';
const YourTemplate = ({ pageContext }) => {
const { backgroundImage } = pageContext;
return (
{/* 页面内容 */}
);
};
export default YourTemplate;
在上述代码中,我们从 pageContext
中获取 backgroundImage
数据,并将其作为 url
的值来设置背景图像。
通过这个示例,你可以将背景图像数据正确地传递到GraphQL Gatsby查询,并在页面模板中正确地使用它。请注意,你需要根据你的项目结构和数据模型来调整查询和模板的代码。
上一篇:背景图像适应网页而无需滚动