Я почти уверен, что вам не нужен e.preventDefault()
в методе handleClick
(в данном случае).Вы можете удалить его и все будет в порядке.
Однако, если вы столкнетесь с этой проблемой, где она требуется (например, form
представления или когда вы обнаружите, что страница автоматически обновляется или вы хотите предотвратить событие действия по умолчанию)), а затем просто добавьте фиктивное preventDefault
в смоделированное событие click
:
wrapper.find("Icon").at(0).simulate("click", { preventDefault: () => null });
Чтобы обеспечить правильные изменения состояния, измените метод handleClick на один из приведенных ниже (поскольку setState
является асинхронным,использование его обратного вызова обеспечивает точность значений при сравнении):
Опция 1 - метод handleClick:
handleClick() {
this.setState(prevState => {
const nextPage = prevState.currentPage - 1; // subtract 1 from current page
return nextPage > 0 // if next page is greater than 0
? { currentPage: nextPage } // subtract 1
: { null } // else do nothing
})
}
Опция 2 - метод handleClick:
handleClick() {
this.setState(prevState => ({
currentPage: prevState.currentPage > 0 ? prevState.currentPage - 1 : 0 // if current page is greater than 0, subtract 1, else set it 0
}))
}