Добавление класса DOM элементу на 1.5 секунды

112
04 января 2020, 23:40

Не получается реализовать такую логику - нужно навешивать элементу класс со свойством pointer-events: none; на 1.5 секунды после изменения state.

import ball from './img/ball.png'; 
 
export default class Test extends Component { 
  constructor(props) { 
    super(props); 
     
    this.state = { 
      position: 0 
    } 
  } 
   
  changePosition = () => { 
    this.setState({ 
      position: ++this.state.position 
    }) 
     
    setTimeout(()=>{ 
       
    }, 1500) 
     
     
  } 
   
  render() { 
    let boxStyle = styles.box; 
    let pointerEvent = ` ${styles.box_inactive}`; 
     
    if (this.state.position === 1) { 
      boxStyle += pointerEvent; // это мне нужно засунуть в setTimeout , но,  как я понял нельзя это делать внутри render (я про setTimeout), но где тогда это можно сделать? нужно повесить класс на 1.5 секунды и снять его 
    } 
     
     
    return( 
      <div className={boxStyle}> 
        <img className={styles.ball} onClick={this.changePosition} src={ball}/> 
      </div> 
    ); 
  } 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

Answer 1

Решил вопрос добавлением еще одного свойства состояния

this.state = {
    deerPosition: 0,
    isClickable: true
};

setTimeout(() => {
   this.setState({
     isClickable: true
  })
}, 1600);

ну и отрывок простой логики

if (!this.state.isClickable) {
    boxStyle += pointerEvent;
}
READ ALSO
React JS : Группировка элементов объекта

React JS : Группировка элементов объекта

Есть объект dataСодержание объекта

131
Babel преобразовывает не весь код в ES5

Babel преобразовывает не весь код в ES5

Настроен бейбел, все работает отлично, но на некоторых браузерах, не работает, так как несколько кусков код не траспайлятся, нашел один кусок...

114
Воспроизведение звука в старом IE на ПДА

Воспроизведение звука в старом IE на ПДА

Вводная: используются ПДА с системой Win Embedded 700, а на них работают через web-приложение в локалке на мобильном IE6

127
SVG полукруг разбить на 3 равные части

SVG полукруг разбить на 3 равные части

У меня приложение на Vuejs и мне нужно прогресс-бар создать

126