Qual é a diferença entre vm. $ Set e Vue.set?
Li e reli cuidadosamente os documentos do Vue"Reatividade em profundidade" e a API paravm. $ set eVue.set mas ainda estou tendo dificuldades para determinar quando usar qual. É importante que eu seja capaz de distinguir entre os dois porque, no meu projeto atual do Laravel, estamos definindo muitas propriedades dinamicamente nos objetos.
A distinção nos documentos parece estar entre o idioma que vm. $ Set é "For Vue instance", enquanto Vue.set é "For plain data objects" e que Vue.set é global:
No entanto, existem maneiras de adicionar uma propriedade e torná-la reativa após a criação de uma instância.
Para instâncias do Vue, você pode usar o método da instância $ set (path, value):
vm.$set('b', 2)
// `vm.b` and `data.b` are now reactive
Para objetos de dados simples, você pode usar o método global Vue.set (objeto, chave, valor):
Vue.set(data, 'c', 3)
// `vm.c` and `data.c` are now reactive
Por fim, fiquei pensando se a terceira "opção" de fazer o acima (que é para adicionar várias propriedades ao mesmo tempo) poderia ser usada como um substituto equivalente para qualquer uma das 2 opções acima (adicionando apenas uma propriedade em vez de várias) ?
Às vezes, você pode atribuir várias propriedades a um objeto existente, por exemplo, usando Object.assign () ou _.extend (). No entanto, novas propriedades adicionadas ao objeto não acionarão alterações. Nesses casos, crie um objeto novo com propriedades do objeto original e do objeto mixin:
// instead of `Object.assign(this.someObject, { a: 1, b: 2 })`
this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })