如何通过 Reactjs 中的简单 for 循环进行渲染?
how to render through a simple for-loop in Reactjs?
我在下面定义了一个简单的 React 组件
React.createClass({
generateContent:function(){
for(i = 1;i<=100;i++)
if(i%2 == 0)
{
return <li>Even!</li>
}
else{
return <li>Odd!</li>
}
},
render:function(){
return (<ul>
{this.generateContent()}
</ul>)
}
})
渲染时,组件returnsfor循环的第一条语句(<li>Odd</li>
)然后退出。
我想要类似的东西
<li>Odd</li>
<li>Even</li>
<li>Odd</li>
<li>Even</li>
....
...
我怎样才能做到这一点?
你需要把它全部推入一个数组:
React.createClass({
generateContent: function() {
var html = [];
for(i = 1;i<=100;i++) {
if(i%2 == 0) {
html.push(<li>Even!</li>);
} else {
html.push(<li>Odd!</li>);
}
}
return html;
},
render: function() {
return (<ul>
{this.generateContent()}
</ul>);
}
});
您可以将所有项目推送到一个数组,然后 return 它:
React.createClass({
generateContent:function(){
var list = [];
var content = ['Even!','Odd!'];
for(i = 1;i<=100;i++){
list.push(<li>{content[i%2]}</li>)
}
return list;
},
render:function(){
return (<ul>
{this.generateContent()}
</ul>)
}
})
当您调用 generateContents()
时,您将在第一次迭代时返回,因此您只会得到一个 <li>
。
您应该改为创建一个元素列表 - 循环将在到达 <= 100
.
时为您终止
http://output.jsbin.com/jomiqututo
例如:
var MyComponent = React.createClass({
generateContent: function() {
var html = [];
for(var i = 1; i <=100; i++) {
if(i % 2 === 0) {
html.push('<li>Even</li>');
} else {
html.push('<li>Odd</li>');
}
}
return html;
},
render: function() {
return (
<ul>{this.generateContent()}</ul>
);
}
});
React.createClass({
render: function(){
var html = [];
for (var i = 1; i <= 100; i++) {
if (i % 2 === 0) {
html.push(<li key={i}>Even</li>);
} else {
html.push(<li key={i}>Odd</li>);
}
}
return <ul>{html}</ul>;
}
})
我在下面定义了一个简单的 React 组件
React.createClass({
generateContent:function(){
for(i = 1;i<=100;i++)
if(i%2 == 0)
{
return <li>Even!</li>
}
else{
return <li>Odd!</li>
}
},
render:function(){
return (<ul>
{this.generateContent()}
</ul>)
}
})
渲染时,组件returnsfor循环的第一条语句(<li>Odd</li>
)然后退出。
我想要类似的东西
<li>Odd</li>
<li>Even</li>
<li>Odd</li>
<li>Even</li>
....
...
我怎样才能做到这一点?
你需要把它全部推入一个数组:
React.createClass({
generateContent: function() {
var html = [];
for(i = 1;i<=100;i++) {
if(i%2 == 0) {
html.push(<li>Even!</li>);
} else {
html.push(<li>Odd!</li>);
}
}
return html;
},
render: function() {
return (<ul>
{this.generateContent()}
</ul>);
}
});
您可以将所有项目推送到一个数组,然后 return 它:
React.createClass({
generateContent:function(){
var list = [];
var content = ['Even!','Odd!'];
for(i = 1;i<=100;i++){
list.push(<li>{content[i%2]}</li>)
}
return list;
},
render:function(){
return (<ul>
{this.generateContent()}
</ul>)
}
})
当您调用 generateContents()
时,您将在第一次迭代时返回,因此您只会得到一个 <li>
。
您应该改为创建一个元素列表 - 循环将在到达 <= 100
.
http://output.jsbin.com/jomiqututo
例如:
var MyComponent = React.createClass({
generateContent: function() {
var html = [];
for(var i = 1; i <=100; i++) {
if(i % 2 === 0) {
html.push('<li>Even</li>');
} else {
html.push('<li>Odd</li>');
}
}
return html;
},
render: function() {
return (
<ul>{this.generateContent()}</ul>
);
}
});
React.createClass({
render: function(){
var html = [];
for (var i = 1; i <= 100; i++) {
if (i % 2 === 0) {
html.push(<li key={i}>Even</li>);
} else {
html.push(<li key={i}>Odd</li>);
}
}
return <ul>{html}</ul>;
}
})