【发布时间】:2021-09-28 05:14:48
【问题描述】:
您好,我目前在我的 React Web 应用程序中遇到错误。
“对象作为 React 子对象无效(找到:[object HTMLDivElement])。如果您要呈现子对象集合,请改用数组。”
我知道发生此错误是因为我试图使用 ReactDOM 将对象(我不确定是哪种类型。HTML?)呈现到 DIV 标记中,如下所示。
// Get display div from document
var display = document.getElementById("display");
// Instantiate client, using an WebSocket tunnel for communications.
var ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
var ws_path = ws_scheme + '://' + window.location.host + '/ws/';
var guac = new Guacamole.Client(
new Guacamole.WebSocketTunnel(ws_path)
);
// Add client to display div
var guacDisplay = guac.getDisplay().getElement()
reactDom.render(guacDisplay, display);
当记录我试图渲染的对象(guacDisplay)时,I see the following object in the console.
如何解决此错误?提前致谢。
【问题讨论】:
-
如果您尝试在 UI (HTML) 中显示对象,则会出现此错误。
-
您似乎正在将 React 与纯 JS/HTML 混合使用。
-
要求澄清,不要冒犯:你知道 HTML 和 JSX 之间的区别吗?
-
哦,没有冒犯。这是我第一个使用 JSX 的项目,所以我对它还不是很熟悉。我所知道的是 JSX 允许我在我的 Javascript 代码中输入 HTML 标签。
-
我在这里猜测一下,因为我不知道
Guacamole是什么,但看起来您正在传递ReactDOM.render一个 DOM 元素,而不是 React 元素。它们不一样,它必须是一个 React 元素。如果我是正确的,我想知道你是否真的需要为此做出反应,因为让它工作的唯一方法 (dangerouslySetInnerHTML) 会首先否定使用 React 的任何好处。
标签: javascript html reactjs jsx react-dom