«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как безопасно отображать HTML-строки в React, используя опасноSetInnerHTML?

Как безопасно отображать HTML-строки в React, используя опасноSetInnerHTML?

Опубликовано 18 ноября 2024 г.
Просматривать:498

How to Safely Render HTML Strings in React Using dangerouslySetInnerHTML?

Безопасное отображение строк HTML в формате HTML

В этом сценарии проблема возникает при попытке отобразить обычную строку содержимого HTML, но она вместо этого отображается как строка, не интерпретируемая как HTML. Обычно это происходит, когда свойство, используемое в опасноSetInnerHTML, является объектом, а не строкой.

Чтобы решить эту проблему, убедитесь, что свойство this.props.match.description является строкой. Если это не так, преобразуйте его в HTML, прежде чем присваивать его свойству.

Обработка объектов HTML

При работе с объектами HTML возникают дополнительные сложности. В таких случаях вам потребуется декодировать объекты перед передачей их в опасноSetInnerHTML.

Пример кода

Рассмотрите следующий пример кода:

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      description: '

Our Opportunity:

', }; } htmlDecode(input) { const e = document.createElement('div'); e.innerHTML = input; return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue; } render() { return (
); } } ReactDOM.render(, document.getElementById('root'));

В этом примере свойство описания содержит объекты HTML (). Чтобы правильно отобразить его, функция htmlDecode используется для декодирования этих объектов перед передачей HTML в опасноSetInnerHTML.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3