51

I want create paging link for my grid.I pass maxPages(number) property to component but i cant use for in render method. What can i do ?

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

}});
0

2 Answers 2

36

You can run the loop before the rendering (note that there's an error in your for loop)

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

Sign up to request clarification or add additional context in comments.

1 Comment

Note that putting components outside of render and then using them in render will break some things in 0.13 (0.14 is changing this).
10

You can only embed expressions into JSX.

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

is converted to something like

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

Do you see now how you could never have a for loop in place of children? Statements cannot be inside a function call expression.

You can create an array beforehand, like adeneo showed in their answer.

5 Comments

And strangely enough, running map works because it returns an array -> jsfiddle.net/adeneo/69z2wepo/7038
Yes, because Array(10).join().split(',').map(...) is an expression :) React.createElement('ul', {className: 'pagination'}, Array(10).join().split(',').map(...)); is not a syntax error.
Aha, so createElement accepts a single child, an array of children or text content, and any expression returning one of those are valid.
This JSX converting stuff is clever !
It is! It's just the right amount of magic :) (my personal opinion)

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.