в своем приложении React я получаю некоторый HTML-код с другого сервера (Википедия) и - в этом тексте - хочу заменить все ссылки ссылками на реагирующий маршрутизатор.
Я пришел к выводу, чтоследующий код:
// Parse HTML with JavaScript DOM Parser
let parser = new DOMParser();
let el = parser.parseFromString('<div>' + html + '</div>', 'text/html');
// Replace links with react-router links
el.querySelectorAll('a').forEach(a => {
let to = a.getAttribute('href');
let text = a.innerText;
let link = <Link to={to}>{text}</Link>;
a.replaceWith(link);
});
this.setState({
html: el.innerHTML
})
Затем в render()
я затем вставил его на страницу, используя
<div dangerouslySetInnerHTML={{__html: this.state.html}} />
Проблема в том, что React JSX не является нативным элементом JavaScript, поэтому не работаетс replaceWith
.Я также предполагаю, что такой Link
объект не может быть сохранен как текст, а затем впоследствии восстановлен с использованием dangerouslySetInnerHTML
.
Итак: каков наилучший способ сделать этот метод?Я хочу сохранить все различные элементы вокруг ссылки, поэтому я не могу просто просмотреть ссылки в render()