@Dolerum

Почему не работает инкремент?

Здравствуйте. Не работает инкремент. Не увеличивается дальше двух. То есть видимо счетчик сбрасывается до одного после процедуры сложения.

class ComponentContainer extends React.Component {
    constructor() {
        super();
        this.state = {
          currentPage: 1,
          loading: false
        };
    }
      	nextPage = ( updatedPageNo = '', type ) => {
        let {text} = this.props;
        const updatePageNo = 'prev' === type ? this.state.currentPage - 1 : this.state.currentPage + 1;
        this.setState( { loading: true }, () => {
        this.props.requestSearch(updatePageNo, text)
        })
	};

    render() {
  const { movies} = this.props;
  const showPrevLink = 1 < this.state.currentPage;
  const showNextLink = this.props.totalPages > this.state.currentPage;
  return (
    <MainPageContainer>
{this.props.content}
  {this.props.totalPages > 1 ? <div>
    <Pagination showPrevLink={showPrevLink}
                showNextLink={showNextLink}
				        handlePrevClick={ () => this.nextPage('prev')}
                handleNextClick={ () => this.nextPage('next')}
                />
    </div> : ''}
  </MainPageContainer>
  )
}
}


Знаю, что возразят, что нужно делать setState, но тогда updatePageNo становится undefined. А мне нужно что-то похожее по структуре(чтобы результат сохранялся в объекте). Как сделать?
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
hzzzzl
@hzzzzl
const updatePageNo = 'prev' === type ? this.state.currentPage - 1 : this.state.currentPage + 1;

так ты никогда не меняешь currentPage, и он ВСЕГДА = 1?
поэтому в первый раз updatePageNo = 1 + 1, и во второй раз updatePageNo = 1 + 1

const updatePageNo = 'prev' === type ? this.state.currentPage - 1 : this.state.currentPage + 1;
this.setState( { loading: true }, () => {
  this.props.requestSearchMovies(updatePageNo, text)
  // когда requestSearchMovies вернет OK, то this.setState( { currentPage: updatePageNo} ),
})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы