Я разрабатываю сайт в Гэтсби. js с блогом внутри и для макета поста, я кодирую этот заголовок с фоновым изображением, которое будет установлено автором поста. Я все еще на этапе разработки, размещаю элементы, пустые тексты и т. Д. c.
Я сделал этот компонент с помощью BackgroundImage, graphQL и StaticQuery и в его коде, если я сужу поиск изображения, полученного из gatsby-source-filesystem, с текстом "post_8.jpg", он работает нормально как и должно быть.
import React from 'react'
import { graphql, StaticQuery } from 'gatsby'
import BackgroundImage from 'gatsby-background-image'
import TextScramble from './TextScramble'
const BackgroundDiv = ({ className, children }) => (
<StaticQuery
query={graphql`
query($post: String! ) {
file(relativePath: {eq: "post_8.jpg"}) {
childImageSharp {
fluid {
...GatsbyImageSharpFluid
}
}
}
}
`
}
render={data => {
const imageData = data.file.childImageSharp.fluid
return (
<BackgroundImage
Tag="div"
className={className}
fluid={imageData}
>
<h1 className="bg-white shaddow shadow-md py-1 px-4 w-auto inline-block text-4xl absolute bottom-0 mb-24"><TextScramble>{ children }</TextScramble></h1>
</BackgroundImage>
)}
}
/>
)
export default BackgroundDiv
Однако мне интересно, как бы передать значение из frontmatter со страницы, содержащей сообщение, этому компоненту.
Я думал об использовании значения, переданного компоненту, такого как postName
. Например:
const BackgroundDiv = ({ className, children, postName }) => (
Затем он получит это значение в запросе в виде строки.
query={graphql`
query($post: String! ) {
file(relativePath: {eq: ${postName}}) {
childImageSharp {
fluid {
...GatsbyImageSharpFluid
}
}
}
}
`
}
Я сделал это простое дополнение выше, которое не сработало. При компиляции происходит сбой, сообщая мне
String interpolation is not allowed in graphql tag:
9 | query={graphql`
10 | query($postName: String! ) {
> 11 | file(relativePath: {eq: ${postName}}) {
| ^^^^^^^^^^^
12 | childImageSharp {
13 | fluid {
14 | ...GatsbyImageSharpFluid
File: [$pathToFolder]/gatsby-theme-cripto/src/components/backgroundDiv.js
Я искал проблемы с интерполяцией строк в Google и даже закончил здесь, но я не мог связать это содержимое с моей проблемой. Я не опытный разработчик, поэтому я считаю, что что-то упустил. Мы будем благодарны за любые мысли по этому вопросу, точно так же, как любые запросы по кодам, которые я мог бы публиковать, чтобы помочь понять эту проблему.
Заранее спасибо!