gpt4 book ai didi

html - 如何在ReactJS中渲染静态html页面?

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:11 25 4
gpt4 key购买 nike

我正在尝试在react中渲染一个html页面。我尝试了多种解决方案,但仍然收到错误。是的,我知道有很多与此类似的问题,但这些解决方案都不适合我。我使用reactjs作为前端,只是想显示一个静态html页面。

html 文件如下:

<!DOCTYPE html>

<html>
<head>
<title>Ably WebRTC Video call Demo</title>

<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"
/>
</head>

<body>
<script src="https://cdn.temasys.io/adapterjs/0.15.x/adapter.min.js"></script>

<script src="https://cdn.temasys.io/adapterjs/0.15.x/adapter.screenshare.js"></script>

<script src="https://cdn.ably.io/lib/ably.min-1.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/simple-peer/9.1.2/simplepeer.min.js"></script>

<script src="ably-screenshare.js"></script>

<script src="connection-helper.js"></script>

<div class="container-fluid" style="margin-top: 5em;">
<div class="container" id="join">
<h4 id="online">Users online (0)</h4>

<ul id="memberList"></ul>
</div>

<div class="container" id="call" style="display:none;">
<video width="320" height="240" id="local" controls></video>

<video width="320" height="240" id="remote" controls></video>

<button class="btn btn-xs btn-danger" onclick="handleEndCall()">
End call
</button>
</div>
</div>
</body>

<style>
small {
border-bottom: 2px solid black;
}

li {
list-style: none;
}
</style>
</html>

我尝试过的解决方案是

import React, { Component } from "react";
var __html = require("./screen.html");
var template = { __html: __html };

class ScreenShare extends Component {
render() {
return (
<div className="screen-share">
<span dangerouslySetInnerHTML={template} />
</div>
);
}
}
export default ScreenShare;

即使使用上述解决方案,我仍然收到此错误

./src/components/screenShare/screen.html
Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type.
| <!DOCTYPE html>
|
| <html>

我做错了什么吗?我知道angerlySetInnerHTML不是解决问题的最佳方法,但我尝试将上面的html代码更改为react组件,但没有帮助。所以我尝试危险设置InnerHTML来转换它,但它仍然给出错误。

最佳答案

默认情况下,使用 React 导入 HTML 文件是不起作用的。考虑到您的用例和您想要走的路线,最好的选择是将 HTML 页面转换为 js 文件,然后导出,例如:

html.js 文件

module.exports = `<!DOCTYPE html>

<html>
<head>
<title>Ably WebRTC Video call Demo</title>

<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"
/>
</head>

<body>
<script src="https://cdn.temasys.io/adapterjs/0.15.x/adapter.min.js"></script>

<script src="https://cdn.temasys.io/adapterjs/0.15.x/adapter.screenshare.js"></script>

<script src="https://cdn.ably.io/lib/ably.min-1.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/simple-peer/9.1.2/simplepeer.min.js"></script>

<script src="ably-screenshare.js"></script>

<script src="connection-helper.js"></script>

<div class="container-fluid" style="margin-top: 5em;">
<div class="container" id="join">
<h4 id="online">Users online (0)</h4>

<ul id="memberList"></ul>
</div>

<div class="container" id="call" style="display:none;">
<video width="320" height="240" id="local" controls></video>

<video width="320" height="240" id="remote" controls></video>

<button class="btn btn-xs btn-danger" onclick="handleEndCall()">
End call
</button>
</div>
</div>
</body>

<style>
small {
border-bottom: 2px solid black;
}

li {
list-style: none;
}
</style>
</html>`;

在这里,记下 module.exports 以及使用的模板字符串,以便您可以在 React 页面中这样调用它:

import React, { Component } from "react";
var __html = require('./index.html.js');
var template = { __html: __html };

class ScreenShare extends Component {
render() {
return (
<div className="screen-share">
<span dangerouslySetInnerHTML={template} />
</div>
);
}
}
export default ScreenShare;

关于html - 如何在ReactJS中渲染静态html页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56356133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com