2015-04-24 18 views
13

Tôi muốn tạo liên kết phân trang cho grid.I của tôi vượt qua maxPages (số) tài sản để thành phần nhưng tôi không thể sử dụng cho trong phương pháp render. Tôi có thể làm gì ?Đối với vòng lặp trong phương thức render phản ứng

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

}}); 

Trả lời

9

Bạn có thể chạy vòng lặp trước khi vẽ (lưu ý rằng có một lỗi trong for vòng lặp của bạn)

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

Lưu ý rằng việc đặt các thành phần bên ngoài kết xuất và sau đó sử dụng chúng trong kết xuất sẽ phá vỡ một số thứ trong 0,13 (0,14 đang thay đổi điều này). – FakeRainBrigand

4

Bạn chỉ có thể nhúng biểu thức vào JSX.

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

được chuyển thành một cái gì đó giống như

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

Bạn có thấy bây giờ làm thế nào bạn không bao giờ có thể có một vòng lặp for ở vị trí của children? Các câu lệnh không thể ở bên trong một biểu thức gọi hàm.

Bạn có thể tạo một mảng trước, như adeneo showed in their answer.

+1

Và kỳ lạ đủ, chạy 'bản đồ' hoạt động vì nó trả về một mảng -> https://jsfiddle.net/adeneo/69z2wepo/7038/ – adeneo

+1

Có, vì' Mảng (10) .join(). Split (',') .map (...) 'là một biểu thức :)' React.createElement ('ul', {className: 'pagination'}, mảng (10) .join(). split (','). map (. ..)); 'không phải là lỗi cú pháp. –

+0

Aha, do đó, 'createElement' chấp nhận một đứa trẻ, một mảng các trẻ em hoặc nội dung văn bản và bất kỳ biểu thức nào trả về một trong số đó đều hợp lệ. – adeneo

Các vấn đề liên quan