我正在通过使用内容为CRM构建博客来学习盖茨比,我怀疑如何将其与盖茨比图像一起使用,以将图像显示为富文本的正文字段,一直在搜索互联网,仍然没有找到有关如何做的很好的例子。
我的帖子.jsx:
import React from 'react';
import { graphql } from 'gatsby';
import { documentToReactComponents } from '@contentful/rich-text-react-renderer';
import Layout from '../components/layout';
import Image from '../components/image';
const renderBody = documentToReactComponents;
export const query = graphql`
query($slug: String) {
contentfulBlogPost(slug: { eq: $slug }) {
title
author
date(formatString: "DD-MM-YYYY")
/** body is my rich-text field*/
body {
json
}
}
}`;
const Post = ({ data }) => {
const {
title,
author,
date,
body: { json },
} = data.contentfulBlogPost;
const options = {
renderNode: {
'embedded-asset-block': (node) => {
console.log(`Node: ${JSON.stringify(node, undefined, 2)}`);
/** It works with no problems when using a simple img html tag */
const src = node.data.target.fields.file['en-US'].url;
const imageAlt = node.data.target.fields.file['en-US'].title;
return (
<Image alt={imageAlt} fluid={???}/>
);
},
},
};
return (
<Layout>
<article>
<h1>{title}</h1>
<p>Author: {author}</p>
<p>Date: {date}</p>
{ renderBody(json, options) }
</article>
</Layout>
);
};
export default Post;
我已经至少整天使用GraphIQL,但仍未弄清楚它在插件页面中所述的rich-text字段以及如何使用gatsbycontentfluid。
我通过在 Gatsby-config.js
中使用 downloadLocal: true
来排序我的图像问题:
{
resolve: `gatsby-source-contentful`,
options: {
spaceId: process.env.CONTENTFUL_SPACE_ID,
// Learn about environment variables: https://gatsby.dev/env-vars
accessToken: process.env.CONTENTFUL_ACCESS_TOKEN,
downloadLocal: true,
},
},
导致Gatsby在body { json }
返回的JSON中暴露了一堆额外属性,这些属性以前没有被获取。
我还没有使用流体(尚未(,但是此线程上的人们是:
https://github.com/contentful/rich-text/issues/70