2017-02-13 3 views
1

JSBinРеагировать JS добавления

Я хочу добавить в OBJ на контейнер каждый раз, когда я нажимаю кнопки, как я могу это сделать?

Это только замена контейнера.

Также я хочу сохранить эти кнопки eventListeners кнопки1, button2 в jquery.

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

Append означает, что я нажимаю кнопку, это должно добавить один и тот же объект снова и снова ?? –

+0

да добавьте те же obj снова и снова – IMOBAMA

+0

еще одна вещь, почему вы хотите использовать jquery, вы можете сделать это легко в React js? –

ответ

0

Не воздавать document.getElementById("container"), но document.getElementById("container").appendChild(document.createElement('div'))

Это добавит пустой DIV в #container и возвращает этот DIV к функции рендеринга для использовать

+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); 
}); 

Проверьте это для рабочего примера:

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

+0

проверить рабочий код, но я хочу знать, почему вы хотите поместить кнопки в html ?? вы можете создать компонент, который будет содержать кнопку и дочерний comp, которые будут отображать ui. –

+0

да, похоже, он работает, но я считаю, что это может вызвать сложные проблемы в большом приложении .... спасибо, хотя – IMOBAMA

+0

Я создал свое приложение, используя чистую jquery mess, но так как im, переводя, чтобы реагировать постепенно, мне пришлось бы полностью переписать все по порядку для создания рендеринга всего ui с помощью реакции. – IMOBAMA