事件池的含义是什么?

时间:2017-04-14 16:12:40

标签: reactjs

react docs

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 = nulleventType = 'click'

你可以教我这段代码的每一行吗? ...

1 个答案:

答案 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保存到局部变量中相同。我们在取消之前将值复制到内部状态。