为什么我无法访问 setTimeout 中的事件值?
Why I am not able to access event value in setTimeout?
有人问过我这个问题。我无法给出正确答案。你能帮帮我吗?为什么我们不能在setTimeout中访问事件(e)的值?
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'));
您应该能够访问事件,更有可能是您正在尝试访问合成事件的 属性,例如 e.type
或类似事件。因为 React 重用了合成事件对象,一旦 handleNumber
函数 returns 事件的所有属性都变为 null。有关详细信息,请参阅 the docs。
有人问过我这个问题。我无法给出正确答案。你能帮帮我吗?为什么我们不能在setTimeout中访问事件(e)的值?
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'));
您应该能够访问事件,更有可能是您正在尝试访问合成事件的 属性,例如 e.type
或类似事件。因为 React 重用了合成事件对象,一旦 handleNumber
函数 returns 事件的所有属性都变为 null。有关详细信息,请参阅 the docs。