function onClick(event) {
console.log(event); // => nullified object.
console.log(event.type); // => "click"
const eventType = event.type; // => "click"
setTimeout(function() {
console.log(event.type); // => null
console.log(eventType); // => "click"
}, 0);
// Won't work. this.state.clickEvent will only contain null values.
this.setState({clickEvent: event});
// You can still export event properties.
this.setState({eventType: event.type});
}
为什么event
已经是无效对象,我们仍然可以获得event.type
的值?
这是不是event = {type:null}
?
setTimeout(function() {
console.log(event.type); // => null
console.log(eventType); // => "click"
}, 0);
为什么event.type = null
和eventType = 'click'
?
答案 0 :(得分:0)
function onClick(event) {
console.log(event); // => nullified object.
console.log(event.type); // => "click"
我们可以访问处理程序内的event
的所有属性。
const eventType = event.type; // => "click"
我们正在将event.type
复制到局部变量中。局部变量不会因无效而受到影响。
setTimeout(function() {
当处理程序已经返回时,将调用函数中的所有内容,这意味着在事件无效后。
console.log(event.type); // => null
console.log(eventType); // => "click"
}, 0);
因此,我们无法访问event.type
,因为它将无效。我们将能够访问eventType
这是一个本地变量,其内容不会受到影响。
// Won't work. this.state.clickEvent will only contain null values.
this.setState({clickEvent: event});
event
是将被取消的事件。保存其对州的参考不会帮助我们。
// You can still export event properties.
this.setState({eventType: event.type});
}
保存event.type
没问题。这与将event.type
保存到局部变量中相同。我们在取消之前将值复制到内部状态。