Я хочу визуализировать каждый раз только три элемента моего массива numbers.
Каждый раз, когда я нажимаю em next, чтобы изменить числа.
например: На экране: 123, я нажал кнопку, появится, 456 и далее.
MyCode:
class Contador extends React.Component {
constructor(props) {
super(props);
this.state = {
elementsPerPage:3,
currentPage:0,
numbers:[1,2,3,4,5,6,7,8,9,10]
};
this.nextPage = this.nextPage.bind(this);
}
nextPage () {
this.setState({ currentPage: this.state.currentPage + 1 });
console.info(this.state.currentPage)
}
elementsOnScreen () {
this.state.numbers.map((number)=>
<li>{number}</li>)
}
render() {
return (
<div>
<h1>Elements: {this.elementsOnScreen} </h1>
<h1>Current Page: {this.state.currentPage}</h1>
<button onClick = {this.nextPage}> next </button>
</div>
);
}
}
ReactDOM.render(
<Contador/>,
document.getElementById('root')
)<div id = "root"></div>




Вы можете использовать Array.prototype.slice ():
elementsOnScreen () {
const { currentPage, numbers, elementsPerPage } = this.state;
return numbers
.slice(currentPage*elementsPerPage, currentPage*elementsPerPage + elementsPerPage + 1)
.map(number => (<li>{number}</li>));
}
Используйте метод среза, чтобы извлечь три элемента из this.state.numbers и сопоставить их с помощью функции карты.
elementsOnScreen () {
const { currentPage, numbers, elementsPerPage } = this.state;
return numbers
.slice(currentPage*elementsPerPage, currentPage*elementsPerPage + elementsPerPage)
.map(number => (<li>{number}</li>));
}
также, когда вы визуализируете функцию внутри jsx, вы должны вызывать функцию, а не передавать ее значение
<h1>Elements: {this.elementsOnScreen()} </h1>
this.elementsOnScreen передаст функцию, но не запустит ее. Чтобы запустить функцию и вернуть ее значения, вам необходимо выполнить this.elementsOnScreen().