向React提供原生Javascript对象
Feed native Javascript objects to React
我在以下链接中发现了有趣的片段:https://facebook.github.io/react/blog/2015/12/18/react-components-elements-and-instances.html
文章描述了React如何在内部使用原生Javascript对象来构建树。
目前,我正在制作一个拖放编辑器,我想为它构建一个React组件树。理想情况下,我会构建一个嵌套的Javascript对象树,并在运行时将它们转换为组件树。
{
type: Button,
props: {
children: 'OK!',
color: 'blue'
}
}
这是react内部计算的。我如何将这个对象(/对象树)立即提供给React?
我认为添加的片段是伪代码。下面的示例不起作用:
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 Button = ({ color, children }) => <button style={{ background: color }}>{children}</button>;
ReactDOM.render({
$$typeof: Symbol.for('react.element'),
type: Button,
props: {
children: 'OK!',
color: 'blue'
}
}, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
相关文章:
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 循环遍历以数组为值的Javascript对象
- 从ajax请求中获取javascript对象
- 如何从对象的原型方法访问JavaScript对象属性
- 将XML转换为普通的旧JavaScript对象
- 通过引用传递JavaScript对象
- javascript对象操作:根据指定条件选择属性
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 如何在异步函数中使用javascript对象
- 临时Javascript对象
- 如何在ASP中为用户控件添加Javascript对象网
- 使用数组向下搜索Javascript对象
- Rails将JavaScript对象存储到Model的有效方式
- JavaScript对象不是从原型链继承的
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- SetInterval在javascript对象中表现怪异
- Javascript 对象和 this 关键字
- 如何在不知道关键字的情况下访问javascript对象值
- 在 JavaScript 对象中设置要使用的运算符的属性
- 如何搜索JavaScript对象并更改值