У меня есть настройка блога Gatsby + WP API (с включенной разметкой), и она отлично работает, за исключением случаев, когда я пытаюсь отобразить разметку HTML в виде фрагментов кода. Я использую escape-символы (см. Ниже), но по какой-то причине HTML внутри тегов _1 _ / _ 2_ отображается как фактический HTML, а не как фрагмент кода HTML.
Я понимаю, что dangerouslySetInnerHTML
нужно делать, но я не думал, что это будет, если я использую escape-символ <
?
Вот разметка в сообщении в блоге WP ..
<pre class="language-markup"><code>
<div>
<p>Lorem ipsum...</p>
</div>
</code></pre>
И вот как я отображаю весь контент поста в компоненте реакции ...
<section className="article-body" itemProp="articleBody"
dangerouslySetInnerHTML={{ __html: this.props.html }}
/>
Теги <div>
и <p>
отображаются как HTML, а не как фрагменты кода.
Есть ли другой способ сделать это? Для записи я также пробовал это, используя «безопасный» метод (react-render- html) с теми же результатами.
- ОБНОВЛЕНИЕ: -
Мне удалось отобразить HTML как фрагмент кода, заменив тег <code>
на <xmp>
. Я знаю, что этот тег больше не поддерживается официально, и он далек от элегантности, поэтому я думаю, что могу попытаться отделить фрагменты кода от остального содержимого, как предлагается ниже.