2017-07-18 39 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