Некоторые исправления в вашем вопросе, что я нашел
Предполагая, что вы хотите иметь тег привязки
, чтобы настроить свой массив, вместо этого измените
<a href='mailto:yo@mail.com'>email</a>
of <Link to="mailto:yo@mail.com">email</Link>
"Click here to send an <Link to="mailto:yo@mail.com">email</Link>"
вместо "Click here to send an <a href='mailto:yo@mail.com'>email</a>"
, кавычки должны использоваться правильно внутри двойных кавычек, вам нужно иметь одинарные кавычки, или наоборот
Выполнение вышеуказанных изменений, добавление решение
Здесь можно использовать несколько подходов
- Использование библиотеки
Пример html -react-parser
Фрагмент кода
Приложение js
import React, { Fragment } from "react";
import Parser from "html-react-parser";
const arr = [
{
id: 1,
title: "This is a title",
body: [
"This is some stuff. Lorem ipsum, lorizzle for shizzle.",
"Click here to send an <a href='mailto:yo@mail.com'>email</a>"
]
},
{
id: 2,
title: "This is another title",
body: [
"Moar stuff.",
"Here is ma' <a href='mailto:hello@mail.com'>email</a>"
]
}
];
export default function App() {
return (
<Fragment>
{arr.map(item => (
<section key={item.key} className="">
<h2 className="text-base">{item.title}</h2>
{item.body.map(function(paragraph) {
return <p className="text-sm">{Parser(paragraph)}</p>;
})}
</section>
))}
</Fragment>
);
}
Используйте
опасноSetInner Html, но этот метод имеет некоторую fl aws, как указано в документации
опасноSetInner HTML является заменой React для используя внутренний HTML в DOM браузера. В общем, установка HTML из кода является рискованной, потому что легко случайно подвергнуть ваших пользователей атаке межсайтового скриптинга (XSS).
Фрагмент кода
App. js
import React, { Fragment } from "react";
const arr = [
{
id: 1,
title: "This is a title",
body: [
"This is some stuff. Lorem ipsum, lorizzle for shizzle.",
"Click here to send an <a href='mailto:yo@mail.com'>email</a>"
]
},
{
id: 2,
title: "This is another title",
body: [
"Moar stuff.",
"Here is ma' <a href='mailto:hello@mail.com'>email</a>"
]
}
];
export default function App() {
return (
<Fragment>
{arr.map(item => (
<section key={item.key} className="">
<h2 className="text-base">{item.title}</h2>
{item.body.map(function(paragraph) {
return (
<p
className="text-sm"
dangerouslySetInnerHTML={{ __html: paragraph }}
/>
);
})}
</section>
))}
</Fragment>
);
}
В описанном выше подходе вы можете выполнить dompurify и установить с помощью dangeroussetinner html, чтобы избежать атак XSS
import DOMPurify from "dompurify";
<p
className="text-sm"
dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(paragraph) }}
/>;
Надеюсь, это поможет лучше понять ?