J'ai le document texte riche suivant
<p>test</p><p></p>
Lorsque j'utilise documentToHtmlString (à partir d'ici https://www.npmjs.com/package/@contentful/rich-text-html-renderer )
documentToHtmlString(document);
3 Réponses :
De https://github.com/contentful/rich- text / issues / 58 # issuecomment-452236848
Vous devez spécifier comment rendre cela Vous pouvez en savoir plus ici https : //github.com/contentful/rich-text/tree/master/packages/rich-text-html-renderer#usage
const options = { renderNode: { [BLOCKS.EMBEDDED_ASSET]: ({ data: { target: { fields }}}) => `<img src="${fields.file.url}" height="${fields.file.details.image.height}" width="${fields.file.details.image.width}" alt="${fields.description}"/>`, }, };
Ma résolution spécifique était:
const options = { renderNode: { [BLOCKS.EMBEDDED_ENTRY]: (node) => `<custom-component>${customComponentRenderer(node)}</custom-component>` } } documentToHtmlString(document, options);
const options = { renderNode: { [BLOCKS.EMBEDDED_ASSET]: ({ data: { target: { fields }}}) => <div dangerouslySetInnerHTML={{__html: `<img src="${fields.file['en-GB'].url}" alt="${fields.title['en-GB']}"/>`}} />, }, }; I found i needed to set dangerouslySetInnerHTML for it to render properly in the browser.
Je pense que c'est parce que vous enveloppez l'image avec un div, et je ne suis toujours pas nécessairement sûr que vous en ayez besoin.
il rendait le chemin de l'url sous forme de chaîne et non de HTML, pas sûr qu'il existe un autre moyen de rendre sans le div, pour référence - reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml
Voici la réponse originale et les valeurs dynamiques codées en dur, J'espère que cela pourra aider le lecteur à avoir une réponse immédiate au problème spécifique:
let options = { renderNode: { 'embedded-asset-block': (node) => `<img class="img-fluid" src="${node.data.target.fields.file.url}"/>` } } let bodyHTML = body ? documentToHtmlString(body, options) : ''
Pourquoi est-ce «la meilleure façon»? Vous avez pris la réponse originale et les valeurs dynamiques codées en dur.
@SethMcClaine Votre réponse est excellente pour une bonne étude.