Вы можете использовать регулярное выражение, чтобы найти элемент, которому требуется дополнительный атрибут, и использовать dangerouslySetInnerHTML
для вывода результатов.
Например:
componentDidMount() {
const apiHtml = fetch('/my_api').then((apiHtml) => {
// fetch the raw HTML you want
this.setState({apiHtml})
})
}
render() {
const rawHtml = this.state.apiHtml.replace('<a href', "<a target='_blank' href")
return (
<div>
{this.state.apiHtml && <div dangerouslySetInnerHTML={{__html: rawHtml}} />}
</div>
)
}
В качестве альтернативы, болеекомплексный подход заключается в разборе и преобразовании строки HTML с использованием response-html-parser
import ReactHtmlParser, { processNodes, convertNodeToElement, htmlparser2 } from 'react-html-parser';
function transform(node) {
if (node.type === 'a' &&) {
return convertNodeToElement(node, index, transform); // Alter the object here to suit your needs
}
}