【问题标题】:contentful rich text - blank screen内容丰富的富文本 - 空白屏幕
【发布时间】:2021-11-14 07:05:47
【问题描述】:

我正在尝试从这个查询中呈现富文本,但页面是空白的。我真的很困惑,因为文档只显示了如何呈现图像资产的示例。谁能帮忙??

我正在尝试以内容丰富的格式显示富文本,即第一行应该是粗体

/* eslint-disable */
import React from 'react';
import { Helmet } from 'react-helmet';
import { graphql } from 'gatsby';
import Layout from '../components/layout';
import { documentToReactComponents } from '@contentful/rich-text-react-renderer';
import { renderRichText } from "gatsby-source-contentful/rich-text"
import { BLOCKS, MARKS } from "@contentful/rich-text-types"

export const query = graphql`
query MyQuery($slug: String) {
    contentfulLongPost(Slug: {eq: $slug}) {
      title
      updatedAt(formatString: "MMMM Do, YYYY")
      body {
        raw
      }
    }
  }
  
`;


const options = {
  renderMark: {
    [MARKS.BOLD]: (text) => <span>{text}</span>
    
  },
  
}



const CaseStudy = ({data}) => {
    const { bodyRichText } = data.contentfulLongPost


     

    return (
        <Layout>
        <div>   {bodyRichText && renderRichText(bodyRichText, options)}</div>
        </Layout>
    );
};

export default CaseStudy;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

【问题讨论】:

  • 你不是说要通过data.contentfulLongPost.body.raw吗?此外,如果您使用 Gatsby,则不应将脚本标签放入页面以加载 React。

标签: javascript reactjs gatsby contentful


【解决方案1】:

您没有任何 bodyRichText 字段,所以我不明白您为什么要在以下位置进行解构:

const { bodyRichText } = data.contentfulLongPost

这是从文档中提取的,其数据结构具有bodyRichText。您正在直接访问raw,因此您可以省略它。假设您的查询有效(假设很多,请在localhost:8000/___graphql 进行测试),我认为您正在寻找:

const CaseStudy = ({data}) => {
    return (
        <Layout>
        <div>   {data.contentfulLongPost.body && renderRichText(data.contentfulLongPost.body, options)}</div>
        </Layout>
    );
};

但我想您需要对查询进行更多调整。我完全不确定您是否在所有用例中正确获取了 raw 字段。

【讨论】:

  • 我得到这个错误:
  • 函数 Object.invokeGuardedCallbackDev 出错
  • 如果我使用 console.log(data),我会得到原始数据
  • 你需要更多的支持......你有data.contentfulLongPost吗?你能粘贴他的输出吗???
  • 请不要超载评论部分:您已经(再次)编辑了第一个 sn-p,因此数据结构已更改(再次)。使用这个renderRichText(data.contentfulLongPost.body, options)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多