Я пытаюсь отобразить html-информацию из файла уценки, используя компонент со статическим запросом в GatsbyJS. Когда я распечатываю данные, я получаю необработанный HTML с тегами.
Я хотел бы отобразить заголовок уценки и текст HTML под ним.
components/contact.js
import React from "react"
import { Link, StaticQuery, graphql } from "gatsby"
const Cont = ({ data }) => (
<section className="home-banner">
<h1 className="title">
{data}
</h1>
<div className="description">
{data}
</div>
</section>
)
export default function ContText() {
return(
<StaticQuery
query={graphql`
query MyQuery {
markdownRemark(frontmatter: {template: {eq: "contact-page"}}) {
html
frontmatter {
title
}
}
}`
}
render={ data => {
return(
<Cont
data={data.markdownRemark.html}
/>
)
}
}
/>
)
}
Есть ли способ, которым я могу отображать заголовок и текст с помощью одного компонента, и как я могу изменить необработанный HTML на более чистые текстовые данные, как на обычных страницах.
index-page.js
import React from "react"
import { graphql, Link } from "gatsby"
import Img from "gatsby-image"
import Layout from "../components/layout"
import BlogListHome from "../components/blog-list-home"
import SEO from "../components/seo"
import Cont from "../components/contact"
export const pageQuery = graphql`
query HomeQuery($id: String!){
markdownRemark(id: { eq: $id }) {
id
html
frontmatter {
title
tagline
featuredImage {
childImageSharp {
fluid(maxWidth: 480, maxHeight: 380, quality: 80, srcSetBreakpoints: [960, 1440]) {
...GatsbyImageSharpFluid
}
sizes {
src
}
}
}
cta {
ctaText
ctaLink
}
}
}
}
`
const HomePage = ({ data }) => {
const { markdownRemark } = data // data.markdownRemark holds your post data
const { frontmatter, html } = markdownRemark
const Image = frontmatter.featuredImage ? frontmatter.featuredImage.childImageSharp.fluid : ""
return (
<Layout>
<SEO/>
<div className="home-banner grids col-1 sm-2">
<div>
<h1 class="title">{frontmatter.title}</h1>
<p class="tagline">{frontmatter.tagline}</p>
<div className="description" dangerouslySetInnerHTML={{__html: html}}/>
</div>
<div>
{Image ? (
<Img
fluid={Image}
alt={frontmatter.title + ' - Featured image'}
className="featured-image"
/>
) : ""}
</div>
</div>
<div>
<Cont/>
</div>
<BlogListHome/>
<div>
<h1> Recomendations go hear!</h1>
</div>
</Layout>
)
}
export default HomePage
В настоящее время я подумываю о создании двух компонентов, один для маленького противника, но не имеет значения, если я не могу изменить HTML. Спасибо всем заранее.