Есть ли способ визуализировать HTML из строки в React без использования dangerouslySetInnerHTML или пакета React HTML Parser?

Я хочу иметь возможность отправлять элемент HTML в виде строки в реквизите моего компонента. Я понимаю, что могу визуализировать это с помощью dangerouslySetInnerHTML(), но я не хочу устанавливать «внутренний» HTML для чего-либо — я просто хочу визуализировать элемент HTML в том виде, в котором он поступает из реквизита.

Например, если я отправлю <a href = "/somepage" data-attr = "somthing">Link here</a>, я просто хочу «напечатать» только этот элемент тега привязки в своем компоненте.

dangerouslySetInnerHTML() могло бы сработать, но мне пришлось бы обернуть отправленный элемент в другой элемент.

Например:

<div dangerouslySetInnerHTML = {{ __html: linkHtml }} />

Будет рендерить:

<div><a href = "/somepage" data-attr = "somthing">Link here</a></div>

Пакет React HTML Parser, кажется, делает то, что я хочу, но я хотел бы знать, есть ли способ сделать это без предварительного использования стороннего пакета.

Кто-нибудь знает, есть ли способ добиться этого?

То есть вас на самом деле не волновало, была ли это строка, просто ее можно было передать в реквизитах?

Ry- 06.06.2024 07:02

@Ry- Часть компонента, который я пытаюсь воссоздать в React, имеет раздел, который может быть ссылкой, кнопкой или просто заголовком. Вместо того, чтобы создавать реквизиты, скажем, для имени ссылки, URL-адреса ссылки, любых атрибутов и т. д., я подумал, что разработчику было бы лучше просто создать тег привязки, кнопку, тег p или любой другой HTML-код, который он хочет, который затем можно будет быть передан в качестве реквизита и отображен в моем более крупном компоненте.

MeltingDog 06.06.2024 07:16

Это очень разумно, но разве это «да»?

Ry- 06.06.2024 07:20

Да, я так полагаю.

MeltingDog 07.06.2024 00:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вы можете использовать это, если хотите использовать реквизит:

<Mycomponent> 
    <div><a href = "/somepage" data-attr = "somthing">Link here</a></div>
</Mycomponent>

и в MyComponent используйте:

interface MycomponentPropsType {
    children?: React.ReactNode;
}

export const Mycomponent = ({ children }: MycomponentPropsType) => {
    return (
    <>
        {children}
    </>
    )
}

Другой способ, который, я думаю, вы не хотите его использовать:

let node = `<div><a href = "/somepage" data-attr = "somthing">Link here</a></     div>`
let element = document.getElementById("Mycomponent")
element.insertAdjacentHTML("afterbegin", node)

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

Похожие вопросы

Круговой индикатор выполнения SVG для завершения прогресса по определенному значению
Измените цвет карты на картах Highcharts, а также покажите цвета в зависимости от минимума и максимума
Включите атрибуты в document.createElement для пользовательских элементов
Перетаскиваемый div, но перемещаемый только заголовком? только JavaScript
Копирование списка выбора/опций в другой список выбора/опций
Извлечь имена полей из объекта массива в Javascript
Ошибка динамической привязки набора данных ко встроенному отчету PowerBI
Вызов перехватчика useState внутри объявленной функции приводит к ошибке — нарушение правил React Hook
Эффект масштабирования при наведении изображения, отображение деталей изображения
Какой формат видео использовать для поддержки прозрачного видео в веб-приложениях для настольных компьютеров и мобильных устройств, поддерживающих все браузеры (настольные и мобильные устройства)