馈送本机Javascript对象以进行响应

馈送本机Javascript对象以进行响应,javascript,reactjs,Javascript,Reactjs,我在以下链接中找到了有趣的片段: 本文介绍React如何在内部使用本机Javascript对象构建树。 目前我正在开发一个拖放编辑器,我想为它构建一个React组件树。理想情况下,我会构建一个嵌套Javascript对象树,并在运行时将它们转换为组件树 例如,如果我有一个这样的对象(前面添加的链接片段): 这是react内部计算的结果。 如何立即馈送此对象(/object tree)以作出反应 我认为添加的代码片段是伪代码。例如,以下示例将不起作用: ReactDOM.render({ t

我在以下链接中找到了有趣的片段:

本文介绍React如何在内部使用本机Javascript对象构建树。
目前我正在开发一个拖放编辑器,我想为它构建一个React组件树。理想情况下,我会构建一个嵌套Javascript对象树,并在运行时将它们转换为组件树

例如,如果我有一个这样的对象(前面添加的链接片段):

这是react内部计算的结果。 如何立即馈送此对象(/object tree)以作出反应

我认为添加的代码片段是伪代码。例如,以下示例将不起作用:

ReactDOM.render({
  type: Button,
  props: {
    children: 'OK!',
    color: 'blue'
  }
}, document.getElementById('root'));

您需要添加一个额外的属性作为安全措施,以避免在JSON中注入组件(不可能从JSON创建所需的符号)

这一点在以下章节中进行了解释:

所有React元素都需要额外的$$typeof: 为安全起见,在对象上声明了Symbol.for('react.element')字段 原因。在上面的例子中省略了它。此博客条目使用 元素的内联对象,让您了解发生了什么 但除非添加$$typeof,否则代码不会按原样运行 或将代码更改为使用React.createElement()或 JSX

const按钮=({color,children})=>{children};
ReactDOM.render({
$$typeof:Symbol.for('react.element'),
类型:按钮,
道具:{
孩子们:“好的!”,
颜色:“蓝色”
}
},document.getElementById('root')

ReactDOM.render({
  type: Button,
  props: {
    children: 'OK!',
    color: 'blue'
  }
}, document.getElementById('root'));