角度 2 - 在 setTimeout 中使用“this”

2022-08-30 01:55:53

我在课堂上有一个这样的函数

  showMessageSuccess(){

    var that = this;
    this.messageSuccess = true;

    setTimeout(function(){
      that.messageSuccess = false;
    },3000);

  }

我该如何重写这个,这样我就不必在“that”var中存储对“this”的引用?如果我在 setTimeout 中使用“this”,则 messageSuccess bool 似乎不会更改/更新。


答案 1

您需要使用箭头函数 ()=> ES6 功能在 setTimeout 中保留上下文。

// var that = this;                        // no need of this line
this.messageSuccess = true;

setTimeout(()=>{                           // <<<---using ()=> syntax
    this.messageSuccess = false;
}, 3000);

答案 2