react dangerouslySetInnerHTML и Link

408
30 августа 2017, 17:43

Добрый день.

Подскажите, пожалуйста, как правильно сделать в связке с React?

У меня есть сторонний api, там обычная страница с блога, данные в виде json. Там есть свои ссылки на внутренние страницы того сайта. Мне нужно выводить у себя статью, а когда переходят по внутренний ссылке, то получать снова json той страницы и отображать новые данные у себя. В общем, когда гуляют по статьям, то все происходит у меня, просто меняются данные в адресной строке, а к серверу делаются запросы за новыми данными. При этом должна работать навигация в браузере назад и в перед.

Я беру данные, изменяет все ссылка на link, и вывожу всю статью с помощью dangerouslySetInnerHTML. Но вот тут у меня проблема, потому что он не обрабатывает Link. Подскажите, пожалуйста, как правильно сделать? Может я изначально выбрал не правильное направление?

Answer 1

Не очень понятно из текста, но судя по всему, ты получаешь json, в котором одно из полей — это html, который ты и пихаешь в dangerouslySetInnerHTML, предварительно заменив на .

Никогда так не делай! Взять html со стороннего ресурса и вставить его в свою страницу — это очень плохая идея. См. что такое XSS-атака.

Правильное решение в твоем случае — это взять одну из библиотек вроде этой. Она превратит входной html в React-компонент. В процессе парсинга можно будет заменить иходные на . Как это сделать см. доку.

READ ALSO
Порядок выполнения скрипта

Порядок выполнения скрипта

Вот при таком выполнение сначала должен показаться первый параграф на странице, потом выполнится скрипт, и только потом покажется последний...

298
При обращении к API через get в Angular 2 ошибка 405

При обращении к API через get в Angular 2 ошибка 405

Есть некое API требующее авторизацииЯ отправляю логин и пароль в headers, но по какой-то причине ошибка 405

316
Преобразование скалярных типов при сравнении JavaScript

Преобразование скалярных типов при сравнении JavaScript

Объясните, пожалуйста, почему из трех алертов ниже исполняется только последний? Вроде как во всех трёх случаях идет мягкое сравнение на равенство...

292