2015-04-24 12 views
13

Desidero creare il collegamento di paging per la mia griglia. Passare la proprietà maxPages (numero) al componente ma non posso usarlo per il metodo di rendering. Cosa posso fare ?Per il ciclo nel metodo di rendering reattivo

var Pagination = React.createClass({ 

render: function(){ 


    return(
    <div class="text-center"> 
     <ul class="pagination"> 

      <li><a href="#">«</a></li> 
      {for (var i=0;i <10;i++;) 
      { 
       return(<li><a href="#">i + 1 </a></li>); 
      } 
      } 

      <li><a href="#">»</a></li> 
     </ul> 
    </div>); 

}}); 

risposta

9

È possibile eseguire il ciclo prima del rendering (si noti che c'è un errore nel vostro for ciclo)

var lis = []; 

for (var i=0; i<10; i++) { 
    lis.push(<li><a href="#">{i + 1}</a></li>); 
} 

var Pagination = React.createClass({ 
    render: function(){ 
     return(
      <div class="text-center"> 
       <ul class="pagination"> 

        <li><a href="#">«</a></li> 
        {lis} 
        <li><a href="#">»</a></li> 
       </ul> 
      </div> 
     ); 
    } 
}); 

FIDDLE

+1

Nota che mettere componenti al di fuori del rendering e usarli nel rendering interromperà alcune cose in 0.13 (0.14 sta cambiando questo). – FakeRainBrigand

4

È possibile incorporare solo espressioni in JSX.

<ul className="pagination">{children}</ul> 

viene convertito in qualcosa di simile a

React.createElement('ul', {className: 'pagination'}, children); 

Vedete ora come si potrebbe mai avere un ciclo for al posto di children? Le istruzioni non possono essere contenute in un'espressione di chiamata di funzione.

È possibile creare un array in anticipo, ad esempio adeneo showed in their answer.

+1

E stranamente, eseguire 'map' funziona perché restituisce un array -> https://jsfiddle.net/adeneo/69z2wepo/7038/ – adeneo

+1

Sì, perché' Array (10) .join(). Split (',') .map (...) 'è un'espressione :)' React.createElement ('ul', {className: 'pagination'}, Array (10) .join(). split (','). map (. ..)); 'non è un errore di sintassi. –

+0

Aha, quindi 'createElement' accetta un singolo figlio, una serie di elementi secondari o di testo e qualsiasi espressione che restituisce una di queste è valida. – adeneo

Problemi correlati