Objects are not valid as a React child (found: [object HTMLDivElement])

背景

React+typescript 开发,场景为 将后端返回的字符串解析成DOM,渲染在ToolTip 组件中。代码类似为:

<ToolTip
  value = { () => {
      const div = document.createElement('div');
      div.innerHTML = text;
   return div;
 }}>
    hover tip
</ToolTip>

ToolTip 组件的 value值类型为string | React node 。

问题

然后这样写就报错了:
image.png

表示我如果要渲染一个children的集合,要使用数组。 ??? 我也没渲染数组啊,只不过是个对象啊....

原因

React 的children 的值 只能是 其他的组件或者 html 元素。
像这样:

// ok
<SomeComponent>
    <AnotherComponent />
    <p>Hello, World</p>
</SomeComponent>

// no
<SomeComponent>
  { property1: 'someText', property2: 69 }  
</SomeComponent>

当 需要渲染一个对象时, 可以直接使用map 方法。 比如:

<SomeComponent>
    const someObject = { property1: 'someText', property2: 69 };
    someObject.map(function(item, i) => <li key={i}>{item}</li>)
</SomeComponent>

解决方法来自:一个神奇的网站

其他小知识

将string转为 DOM的方法:

hi 点个赞再走~

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容