2017-09-05 64 views
0

我创建了2个React元素:第一个创建传统,使用react.createElement和第二个元素 - 手工输入文字(用于教育目的)。我听说React元素只是一个js对象。 首先是渲染罚款。其次是造成错误。我不能创建一个React元素手工输入文字

错误:ReactDOM.render():无效的组件元素。这可能是由于无意中加载了两个独立的React副本。

第二个React元素有什么问题?

<script> 
 

 

 
var first = React.createElement("h1", null, "Important Announcement"); 
 

 
var second = 
 
{ 
 
$$typeof: Symbol(React.element), 
 
"type": "h1", 
 
"key": null, 
 
"ref": null, 
 
"props": {"children": "Important Announcement"}, 
 
"_owner": null, 
 
"_store": {} 
 
} 
 

 
ReactDOM.render(first, document.getElementById('root')); 
 

 
</script>

+0

尝试修改这条线:$$的typeof:Symbol.for( 'react.element') –

回答

1

更改$$typeof定义$$typeof: Symbol.for('react.element')应该解决您的问题。

为了安全起见,React要求提供here

请看看下面的演示或此jsbin

var first = React.createElement("h1", null, "Important Announcement"); 
 

 
var second = { 
 
    $$typeof: Symbol.for('react.element'), 
 
    "type": "h1", 
 
    "key": null, 
 
    "ref": null, 
 
    "props": { 
 
    "children": "Important Announcement" 
 
    }, 
 
    "_owner": null, 
 
    "_store": {} 
 
} 
 

 
console.log(first, second) 
 
ReactDOM.render(second, document.getElementById('root'));
<script src="https://unpkg.com/[email protected]/dist/react.js"></script> 
 
<script src="https://unpkg.com/[email protected]/dist/react-dom.js"></script> 
 

 
<div id="root"></div>

相关问题