2017-02-13 73 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