Lin*_*ink 9 javascript ecmascript-6 reactjs graphql
我知道关于这个问题有很多问题,但老实说我无法理解任何答案。
我的理解是一切都发生在构建时,我的代码支持这一点。
我想要的是访问一个与我的数据中的字段“slug”同名的文件夹。我在 gatsby-node.js 文件中创建页面。
这是我的代码:
gatsby-node.js
exports.createPages = ({ actions }) => {
const data = require("./src/data/data.json")
const { createPage } = actions
data.forEach(data => {
createPage({
path: `/${data.slug}/`,
component: require.resolve('./src/templates/listing-template.js'),
context:{data},
})
})
}
Run Code Online (Sandbox Code Playgroud)
我在上下文中发送数据。
现在在我的组件中,我希望在查询中使用该数据来获取该页面的特定文件夹:
列表包含数据,并在过滤器中:{ relativeDirectory: { eq:我想使用它;
我试过: ${listing.slug} 但 graphql 不允许它在 eq 中。
我怎样才能做到这一点?
该查询仅从指定文件夹中获取所有文件
const Listing2 = ({listing}) => {
const { casape } = useStaticQuery(
graphql`
query {
allFile(
sort: { fields: name, order: DESC }
filter: { relativeDirectory: { eq: "casape" } }
) {
edges {
node {
id
name
childImageSharp {
fluid(maxWidth: 1000) {
...GatsbyImageSharpFluid_withWebp_tracedSVG
}
}
}
}
}
}
`
)
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我然后使用这些返回的图像来创建一个画廊。
我试过的:
const Listing2 = ({listing}) => {
const { casape } = useStaticQuery(
graphql`
query {
allFile(
sort: { fields: name, order: DESC }
filter: { relativeDirectory: { eq: "casape" } }
) {
edges {
node {
id
name
childImageSharp {
fluid(maxWidth: 1000) {
...GatsbyImageSharpFluid_withWebp_tracedSVG
}
}
}
}
}
}
`
)
Run Code Online (Sandbox Code Playgroud)
我也尝试使用方法 graphQl(query, parameters: {slug : listing.slug}}
并且做了
query Name($id = String!){
allFile(
sort: { fields: name, order: DESC }
filter: { relativeDirectory: { eq: $id
} }
Run Code Online (Sandbox Code Playgroud)
但我不确定。
| 归档时间: |
|
| 查看次数: |
2782 次 |
| 最近记录: |