#javascript #html #reactjs
#javascript #HTML #reactjs
Вопрос:
У меня есть html-файл, и он принимает несколько строк запроса
Html-файл также содержит css и скрипт, включенный с помощью тега script
т.е. мы можем вызвать этот HTML-файл, как показано ниже
external.html?param='something'
я должен использовать этот HTML-код в компоненте react и возвращать как JSX. в настоящее время я выполнил возврат в виде Iframe, как показано ниже
const Component = () => {
const iframeUrl = `external.html?param='something'`;
return (
<iframe
{...props}
src={iframeUrl}
/>
)
}
но как я могу обойтись без использования iframe или iframe с локальным html (не следует постоянно загружать html с сервера)?
Комментарии:
1.
<div dangerouslySetInnerHTML={{__html: contentOfHtml}} />
2. Привет, будет ли работать перенос простого HTML-кода из этого внешнего URL-адреса в компонент react? вместо iframe?
3. @RamuN html-файл огромен, и в нем есть css и script include с использованием тега script
4. Почему бы не преобразовать html-файл в компонент react, который принимает props вместо параметров запроса?
5. @rayhatfield HTML-код огромна и содержит внешний скрипт, добавленный с помощью <script> tag
Ответ №1:
Вы не можете просто импортировать HTML-документ в качестве компонента react. Фреймы Iframes предназначены только для этого.
Чтобы импортировать локальный html-файл в виде iframe без постоянного запроса удаленного ресурса, вы должны вставить содержимое файла в атрибут iframe srcdoc
, который является альтернативой src
встроенному html.
Однако имейте в виду, что html-код все равно будет передаваться при перезагрузке, только вместе с остальной частью приложения, а не в отдельном запросе. Для реального кэширования вам придется использовать механизмы локального хранения и др.
Установив это, вы можете затем манипулировать параметрами запроса:
// iframe inside a react ref
frameRef.current.contentWindow.location.href = 'myQueryParams'
Вы также можете обновить фрейм (он сохраняет параметры):
frameRef.current.contentWindow.location.reload()
Комментарии:
1. srcdoc, похоже, не работает. Для ясности, что мне именно нужно, я хочу загрузить
https://mozilla.github.io/pdf.js/web/viewer.html
в iframe (этот просмотрщик размещен на моем сервере). но этот HTML-код не должен запрашивать удаленный HTML-файл. я устанавливаю iframe с указанным выше URL-адресом и передаю параметр запроса ниже file=blob:abc.abc.com /…2. Я пропустил часть строки запроса в вопросе. Дайте мне подумать…
3. Обрабатываются ли запросы в html на стороне клиента (с использованием API истории) или на стороне сервера? Я предполагаю, что первое
4. со стороны клиента.
5. @NIshamMahsin обновил мой ответ, дайте мне знать, если это поможет.