Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ReactJS中呈现HtmlLevel_Javascript_Reactjs - Fatal编程技术网

Javascript 在ReactJS中呈现HtmlLevel

Javascript 在ReactJS中呈现HtmlLevel,javascript,reactjs,Javascript,Reactjs,在我的第一个ReactJS项目中,我使用documents.createElement等函数构造了一个DIV对象。。。。在我的ReactJS项目中,我将这个带有道具的对象传递给另一个组件,我们称之为C,在这里我要渲染这个对象。但是,控制台告诉我以下错误: 错误:对象作为找到的React子对象无效:[object HtmlLevel] 我知道对象是按我想要的方式构造的,项目将呈现占位符文本。为什么React不允许我在C的渲染函数中执行以下操作 return ( <div key={uui

在我的第一个ReactJS项目中,我使用documents.createElement等函数构造了一个DIV对象。。。。在我的ReactJS项目中,我将这个带有道具的对象传递给另一个组件,我们称之为C,在这里我要渲染这个对象。但是,控制台告诉我以下错误:

错误:对象作为找到的React子对象无效:[object HtmlLevel]

我知道对象是按我想要的方式构造的,项目将呈现占位符文本。为什么React不允许我在C的渲染函数中执行以下操作

return (
  <div key={uuidv4()}>
    {this.props.divObject}
  </div>
);

React代码在虚拟DOM上工作,虚拟DOM本质上是一个Javascript对象树。您正在尝试创建一个真正的DOM元素并将其插入到渲染函数中。虽然在Javascript中编写标记时似乎使用的是HTML元素,但事实并非如此。javascript中的这些标记转换为React.createElement函数调用,而不是实际的div。html元素的实际创建是抽象的。

问题是您使用document.createElement创建了一个实际的DOM元素。React只处理虚拟DOM元素,您可以使用React.createElement创建该元素

这就是说,我认为有一个更好的方法来实现你正试图使用儿童财产

组件的渲染将如下所示:

return (
  <div>
    {this.props.children}
  </div>
);
在父级的组件中

return (
<C>
  <div>I am going to be inserted in `C`'s children props</div>
</C>
)

另外,请注意,您不需要key=uuidv4,因为这将在每次渲染时更改,从而消除key属性的优点。如果您希望处理将vdom传递给组件的问题,则这是React在真实DOM和虚拟DOM之间创建一对一映射并优化其所做更改的一种方法,你可能想考虑使用儿童。