为什么“ this.todos = [... this.todos,todo]”而不推送?

时间:2019-08-03 22:39:16

标签: javascript arrays ecmascript-6

(很抱歉,这个问题很简单,但我不知道如何在[...]上进行搜索)

我不是Javascript英雄,但我也不是初学者。我在tutorial中看到了下面的代码,但不明白为什么未使用push或该语法被称为什么。

  addTodo(todo) {
    this.todos = [...this.todos, todo]
  }

为什么不只是:

  addTodo(todo) {
    this.todos.push(todo)
  }

2 个答案:

答案 0 :(得分:1)

如果您只是按下,则页面不会更新。使用扩展符号重新分配变量,使更改观察者可以查看更改并更新页面。

答案 1 :(得分:1)

这可能是一般情况的一些原因。如果将其与setter一起使用,则会触发该操作,并可能导致副作用。如果存在对该数组的另一个引用,它将不会像其他方式那样对其进行修改。

在这种情况下,是前者。我们正在使用设置器来触发DOM上的更新。