Как в Gatsbyjs отображать изображения уценки, когда уценка исходит из свойства объекта yaml?

Я работаю с приложением gatsbyjs, где у меня есть файлы .yml следующего формата:

Моя цель - отобразить значение поля markdownContent как HTML. Для этого я сначала прочитал содержимое этих файлов с помощью .yml «Гэтсби-трансформер-YAML» плагин , а затем я использую замечание и замечание-HTML , чтобы преобразовать значение markdownContent поля HTML.

HTML-код отображается нормально, однако мне не удалось получить изображение (связанное как часть поля markdownContent) для рендеринга (все запросы изображения возвращаются в 404)

Возможно ли это вообще? Если нет, как я могу получить изображения уценки для рендеринга в HTML, если уценка не исходит от gatsby-markdown-comment?

2 ответа

если вы используете gatsby-transformer-yaml-full, у вас есть возможность передать gatsby-yaml-full-markdow в качестве плагина и выполнить рендеринг в html.

Вы можете использовать gatsby-transformer-yaml-full который создаст запрашиваемый узел GraphQL из ввода YAML.

После его установки (автор: npm install gatsby-transformer-yaml-full или эквивалент пряжи):

      // gatsby-config.js

module.exports = {
  plugins: [
    'gatsby-transformer-yaml-full',
    {
      resolve: 'gatsby-source-filesystem',
      options: {
        path: './content', // Path to your .yaml (or .yml) files
      },
    },
  ],
}

Это позволит плагину создавать узлы GraphQL, представленные как allCollectionYaml. Например:

      {
  allCollectionYaml {
    edges {
      node {
        character
        number
      }
    }
  }
}

Затем на вашей странице / шаблоне вам просто нужно получить доступ к данным GraphQL (хранящимся внутри data объект на странице props) и используйте dangerouslySetInnerHTML для его рендеринга:

      function MyComponent() {
  return <div dangerouslySetInnerHTML={{ __html: props.data.allCollectionYaml.edges.node[0].character}} />;
}

В качестве альтернативы вы можете использовать более безопасный вариант, например markdown-to-jsx.

Другие вопросы по тегам