Почему я не могу получить доступ к значению события в setTimeout? - PullRequest
0 голосов
/ 03 июня 2019

Мне кто-то задавал этот вопрос.Я не смог дать правильный ответ.Не могли бы вы помочь мне?Почему мы не можем получить доступ к значению события (e) в setTimeout?

import React from 'react';
import { render } from 'react-dom';

class App extends React.Component{
  state = {
    number: 1,
  }

  handleNumber = (e) => {
    console.log(e)
    setTimeout(() => {
      console.log(e) // It becomes null here.
      if(e) {
      this.setState({number: this.state.number + 1})
      console.log(this.state.number)
    }
  }, 10)
  }

  render() {
    return (
      <div>
        <button onClick={this.handleNumber}>Hello world</button>
      </div>
)}
}

render(<App />, document.getElementById('root'));

1 Ответ

0 голосов
/ 03 июня 2019

Вы должны иметь доступ к событию, более вероятно, что вы пытаетесь получить доступ к свойству синтетического события, например e.type или что-то в этом роде. Поскольку React повторно использует объект синтетического события, все свойства события становятся нулевыми, когда возвращается функция handleNumber. См. документы для получения дополнительной информации.

...