2017-07-18 38 views
0

新手反应 - 如何添加反应DOM?

我可以创建一个元素,但是如何添加到该元素?

当我尝试

<body> 
    React.... 
    <div id="main_insert"> 
     <span> 
     </span> 
    </div> 
    <script src="https://unpkg.com/[email protected]/dist/react.js"></script> 
    <script src="https://unpkg.com/[email protected]/dist/react-dom.js"></script> <script> 
     let dish = React.createElement("h1", {id: 'top'}, "Baked Salmon"); 
     let ingredients = React.createElement("ul", {id: 'mainList'}, 
     React.createElement("li", null, "eggs"), 
     React.createElement("li", null, "ham"), 
     React.createElement("li", null, "spam") 
    ); 

     ReactDOM.render(dish, document.getElementById('main_insert')); 
     ReactDOM.render(ingredients, document.getElementById('top')); 
     // react and js code here 
    </script> 
    </body> 

我得到

我的H1确实存在的成分,但不是菜,而是内容不见了

enter image description here

+0

使用JSX我的朋友,因此内h1任何内容被通过,我们使内像这样的新元素替换。 –

+0

看起来像UL在那里,它有一些东西在里面。你有没有尝试展开该节点? –

+0

是啊jsx但我没有先学习一点基础知识 –

回答

1

请看看一本返工的例子 - 应该工作:

<body> 
    React.... 
    <div id="main_insert"> 
    <span> 
    </span> 
    </div> 
    <script src="https://unpkg.com/[email protected]/dist/react.js"></script> 
    <script src="https://unpkg.com/[email protected]/dist/react-dom.js"></script>  
    <script> 

    let ingredients = React.createElement("ul", {id: 'mainList'}, 
     React.createElement("li", null, "eggs"), 
     React.createElement("li", null, "ham"), 
     React.createElement("li", null, "spam")); 

    let dish = React.createElement("h1", {id: 'top'}, 
    "Baked Salmon", 
    ingredients); 

    ReactDOM.render(dish, document.getElementById('main_insert')); 
    // react and js code here 

    </script> 
</body> 
1

注意:这是对问题的更多分析,@Piotr已经提供了一种解决方法。

Reacts Website

ReactDOM.render()控制容器节点的内容,你在通过 任何现有DOM元素中被替换时,首先叫

让我们看一下的动作,现在的序列:

1)否render该方法的代码被称为(都评论):

No render method called

在这里,我们可以看到孩子span标签正在显示。

2)现在,我们称之为方法ReactDOM.render(dish, document.getElementById('main_insert')); 这应该插入h1元素,同时替换现有的子元素。

Render h1

正如预期的那样,孩子span标记都与我们建立了h1取代。 3)同样,现在当我们呼叫ReactDOM.render(ingredients, document.getElementById('top'));时,我们的新容器节点是h1标签。

Render ul