我想通过React中的某些元素循环,因为我需要渲染每个视图的数组的一部分。在React中循环遍历某些元素
数组渲染必须从ArrayIndexStart开始,并以ArrayIndexEnd结束。
这里是我的了:
var ObjectArray =[{"letter":"a"},{"letter":"b"},{"letter":"c"},{"letter":"d"},{"letter":"e"},{"letter":"f"},{"letter":"g"},{"letter":"h"},{"letter":"i"},{"letter":"j"},{"letter":"k"},{"letter":"l"},{"letter":"ł"},{"letter":"m"},{"letter":"n"},{"letter":"ń"},{"letter":"o"},{"letter":"ó"},{"letter":"p"},{"letter":"q"},{"letter":"r"},{"letter":"s"},{"letter":"ś"},{"letter":"t"},{"letter":"u"},{"letter":"v"},{"letter":"w"},{"letter":"x"},{"letter":"y"},{"letter":"z"},{"letter":"ź"},{"letter":"ż"}];
class ImageViewer extends React.Component {
constructor() {
super();
this.state = {
ArrayIndexStart: 0,
ArrayIndexEnd: 8,
}
this.handleButtonLeft = this.handleButtonLeft.bind(this);
this.handleButtonRight = this.handleButtonRight.bind(this);
}
handleButtonLeft(ArrayIndexStart, ArrayIndexEnd, event) {
if (ArrayIndexStart >= 8) {
this.setState({ ArrayIndexEnd: ArrayIndexEnd,ArrayIndexStart: ArrayIndexStart})
}
else {
this.setState({ ArrayIndexEnd: 8,ArrayIndexStart: 0 })
}
}
handleButtonRight(ArrayIndexStart, ArrayIndexEnd, event) {
if (ArrayIndexEnd <= ObjectArray.length) {
this.setState({ ArrayIndexStart: ArrayIndexStart,ArrayIndexEnd: ArrayIndexEnd })
}
else {
this.setState({ ArrayIndexStart: 24,ArrayIndexEnd: ObjectArray.length })
}
}
render() {
return(
<div>
<button onClick={() => this.handleButtonLeft(this.state.ArrayIndexStart - 8, this.state.ArrayIndexEnd - 8)}>left</button>
<button onClick={() => this.handleButtonRight(this.state.ArrayIndexStart + 8, this.state.ArrayIndexEnd + 8)}>right</button>
<div>
<p>{this.state.ArrayIndexStart}</p>
<p>{this.state.ArrayIndexEnd}</p>
</div>
</div>
)
for(var i = this.state.ArrayIndexStart;i<this.state.ArrayIndexEnd;i++)
{
return(
<div>
<p>{ObjectArray[i].letter}</p>
</div>
)
}
}}
ReactDOM.render(
<ImageViewer />,
document.getElementById('root')
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
无需单独'setState'呼叫,可以做的设置与同一呼叫 – nem035
感谢尖。 – AESTHETICS