O observador do Vue js não reage às mudanças

Febertson

Já vi algumas perguntas sobre observadores de vue.js, mas não encontrei uma pergunta para lidar com meu problema, então aqui está:

No meu SomeComponent.vue eu uso este código:

...
props: ['value']
,
watch: {
    value(val) {
        console.log(val);
    }
},

Na minha página principal, que usa esse componente, eu uso isso, que está funcionando:

<template>
    <div>
        <SomeComponent
            v-model="test"
        ></SomeComponent>
    </div>
</template>
data() {
    return {
        test: {}
    };
},
created() {
    this.test = this.DoSomething();
},

Se eu adicionar outra propriedade, o observador não será mais acionado:

<template>
    <div>
        <SomeComponent
            v-model="test"
        ></SomeComponent>
    </div>
</template>
data() {
    return {
        test: {}
    };
},
created() {
    this.test.Prop1 = this.DoSomething();
    this.test.Prop2 = "Test";
},

EDIT: Depois da resposta do Behappy, minha parte do componente fica assim agora:

...
props: ["value"],
watch: {
    value: {
        handler(val) {
            console.log(val);
        },
        deep: true
    }
},
palasí

Conforme mencionado nos documentos :

Devido às limitações do JavaScript, existem tipos de mudanças que o Vue não consegue detectar. No entanto, existem maneiras de contorná-los para preservar a reatividade.

Para Objetos

O Vue não pode detectar adição ou exclusão de propriedade. Como o Vue realiza o processo de conversão getter / setter durante a inicialização da instância, uma propriedade deve estar presente no dataobjeto para que o Vue o converta e o torne reativo. Por exemplo:

var vm = new Vue({
  data: {
    a: 1
  }
})
// `vm.a` is now reactive

vm.b = 2
// `vm.b` is NOT reactive

O Vue não permite adicionar dinamicamente novas propriedades reativas de nível raiz a uma instância já criada. No entanto, é possível adicionar propriedades reativas a um objeto aninhado usando o this.$set(object, propertyName, value)método:

No seu caso, isso seria:

created() {
    this.$set(this.test, 'Prop1', this.DoSomething())
    this.$set(this.test, 'Prop2', "Test")
},

Ou você também pode atribuir várias propriedades a um objeto existente, por exemplo, usando Object.assign()como:

this.test = Object.assign({}, this.test, { 'Prop1': 1, 'Prop2': 2 })

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

O observador do Vue restaura valores antigos?

obter o valor do comprimento do observador vue

O observador do componente ember js não funciona

O método de inscrição não reage às mudanças [Angular 2]

Reage às mudanças nativas do arquivo app.js que não refletem na expo

Reage às mudanças nativas do arquivo app.js que não refletem na expo

Vuex Meu componente não reage às mudanças de estado

O observador Mobx não está reagindo às mudanças no observável

Vue JS: estado vuex não atualizando o componente após a mudança

V-if não reage à mudança de estado

Por que o observador para mudança de status do AVAsset não funciona?

Como o Reage detecta mudanças no estado / props?

O observador do Vue js não reage às mudanças

Vue.js, Vuex; a visualização do componente não reage quando os dados na loja Vuex são modificados (com exceção misteriosa)

reage: mudanças no contexto não renderizam novamente meus componentes

As mudanças não estão refletindo no Vue Js

Reage à mudança de variável, mas não deveria

A lista suspensa JS não reage à mudança

Mudanças observáveis do MobX nem sempre acionam a renderização dos componentes do observador

Padrão observador JS

vue js - botão de mudança de linha após a resposta do Ajax

Vue.js não renderiza novamente após selecionar a mudança do elemento

O modelo não reage à mudança da variável React

Por que o observador não reage às atualizações em minha loja?

TextArea não reage à mudança após a edição manual

Por que a visualização SwiftUI personalizada não reage às mudanças de estado

O observador MobX não reage à mudança observável

O bot do Discord não responde / reage a nada (JS)

A data JS não reage à mudança do horário de verão

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  3. 3

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  4. 4

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  5. 5

    Gerenciar recurso shake de Windows Aero com barra de título personalizado

  6. 6

    Como obter dados API adequados para o aplicativo angular?

  7. 7

    UITextView não está exibindo texto longo

  8. 8

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  9. 9

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  10. 10

    Usando o plug-in Platform.js do Google

  11. 11

    Como posso modificar esse algoritmo de linha de visada para aceitar raios que passam pelos cantos?

  12. 12

    Dependência circular de diálogo personalizado

  13. 13

    Coloque uma caixa de texto HTML em uma imagem em uma posição fixa para site para desktop e celular

  14. 14

    iOS: como adicionar sombra projetada e sombra de traço no UIView?

  15. 15

    Como usar a caixa de diálogo de seleção de nomes com VBA para enviar e-mail para mais de um destinatário?

  16. 16

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  17. 17

    How to create dynamic navigation menu select from database using Codeigniter?

  18. 18

    Converter valores de linha SQL em colunas

  19. 19

    ChartJS, várias linhas no rótulo do gráfico de barras

  20. 20

    用@StyleableRes注释的getStyledAttributes。禁止警告

  21. 21

    não é possível adicionar dependência para com.google.android.gms.tasks.OnSuccessListener

quentelabel

Arquivo