Добавление внешнего html-файла со строками запроса в reactjs

#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 обновил мой ответ, дайте мне знать, если это поможет.