2017-02-13 69 views
1

JSBin陣營JS附加

我要追加在容器每次obj的我點擊按鈕,我該怎麼辦呢?

這僅更換容器。

另外我想保留jQuery中button1,button2的按鈕eventListener。

HTML

<h1 class="h1">This is H1</h1> 
<button class="button1">This is button1</button> 
<button class="button2">This is button2</button> 
<div id="container"></div> 

JSX

var obj = [ 
     { 
      'name' : 'Denis Mcarthy', 
      'id' : 5, 
      'comment' : "fuck this shit", 
      'me' : true, 
      'pp' : 'https://avatars2.githubusercontent.com/u/598730?v=3&s=88' 
     }, 
     { 
      'name' : 'John Cena', 
      'id' : 8, 
      'comment' : "This is Dope. Bring some Coke", 
      'pp' : 'https://avatars0.githubusercontent.com/u/96150?v=3&s=88' 
     }    
    ]; 
    var obj2 = [ 
     { 
      'name' : 'Kendall Bitch', 
      'id' : 5, 
      'comment' : "What the Fuck", 
      'me' : true, 
      'pp' : 'https://avatars2.githubusercontent.com/u/598730?v=3&s=88' 
     }, 
     { 
      'name' : 'Randy Orton', 
      'id' : 8, 
      'comment' : "Suck this bitch", 
      'pp' : 'https://avatars0.githubusercontent.com/u/96150?v=3&s=88' 
     }    
    ];  
$('.button1').click(function(){ 
    renderTweet(obj); 
}); 
$('.button2').click(function(){ 
    renderTweet(obj2); 
}); 



     function renderTweet(obj){ 
     var TweetBox = React.createClass({ 
      render: function() { 
      return ( 

     <div> 
      {obj.map((row,i) =>  
       <div className="well clearfix"> 
        <img src={row.pp} /> 
        <div id={row.id}> 
         {row.name} 
         <br /> 
         {row.comment} 
        </div> 
       </div> 
      )} 
     </div> 

      ); 
      } 
     }); 


     ReactDOM.render(
      <TweetBox />, 
      document.getElementById("container") 
     );  
    } 
+0

附加裝置,如我點擊它需要一次又一次地添加相同的對象按鈕?? –

+0

是一次又一次添加相同的對象 – IMOBAMA

+0

還有一件事,爲什麼你要使用jQuery,你可以在React js中輕鬆地做到這一點? –

回答

0

不要渲染到document.getElementById("container"),但document.getElementById("container").appendChild(document.createElement('div'))

這將一個空div追加到#container並返回該div到React to的渲染函數使用

+0

是的,它確實有用,.....但是有沒有其他出路,因爲它創建一個不必要的div元素? – IMOBAMA

+0

這是我們都必須用JSX支付的價格:)是否有理由不想要包裝div? –

+1

我覺得現在付出代價的價格 – IMOBAMA

0

使用另一個變種final將存儲更新後的值,每次單擊該按鈕,把該數組在這個變種,並利用final創建用戶界面,試試這個:

let final = []; 
$('.button1').click(function(){ 
    final = final.concat(obj); 
    renderTweet(final); 
}); 
$('.button2').click(function(){ 
    final = final.concat(obj2); 
    renderTweet(final); 
}); 

檢查這用於工作實施例:

jsbinhttps://jsbin.com/fofasuruno/edit?html,js,output

+0

檢查工作代碼,但我想知道,爲什麼你想把按鈕放在html?您可以創建一個組件,其中將包含該按鈕和一個將呈現UI的子組件。 –

+0

是的,它似乎工作,但我相信它可以導致大型應用程序中的複雜問題....感謝雖然 – IMOBAMA

+0

我已經創建我的應用程序使用純jquery混亂,但由於im轉移到反應逐漸我不得不完全重寫所有按順序使用反應來創建渲染整個UI。 – IMOBAMA