Задать вопрос
Nikulio
@Nikulio
NaN !== NaN

Как правильно обновить компонент в данном случае?

Всем привет!

Внедряю логики с запретом на ре-рендер компонента если нажали на кнопку. Сейчас код такой:

state = {
  updatesLocked : false
};

shouldComponentUpdate(nextProps, nextState) {
  return !nextState.updatesLocked
}

updatesButtonHandle = () => {
  this.setState({
    updatesLocked : !this.state.updatesLocked
  });
}

render () {
  const { updatesLocked } = this.state;
  return (
    <div className={styles.updatesButton} onClick={this.updatesButtonHandle} role="presentation">
      {updatesLocked ? (
        <div className={styles.lockIcon}>
          <LockClosedIcon />
        </div>
      ) : (
        <div className={styles.lockIcon}>
          <LockOpenIcon />
        </div>
      )}
    </div>
  )
}


Как видно из кода, при клике на кнопку я меняю стейт и на основе стейта запрещаю/разрешаю обновление компонента, но есть проблема с изменением иконки в кнопке. Она не обновляется при клике на неё (так как срабатывает shouldComponentUpdate).
Как тут можно обновить иконку при нажатии на кнопку?
Спасибо
  • Вопрос задан
  • 713 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Условие допустимости обновления должно быть чуть более сложным - при запрете надо допускать обновление в случае, если вы пытаетесь выполнить разблокировку, т.е:
shouldComponentUpdate(nextProps, nextState) {
  return !this.state.updatesLocked || !nextState.updatesLocked;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы