Cenários de uso e diferenças entre calculados e assistidos

computado

Computed é adequado para calcular dinamicamente o valor do atributo nos dados. O retorno deve ser adicionado. O atributo nos dados não pode ser atribuído. Quando não houver alteração, ele será lido primeiro do cache.
Cenário de uso: quando um valor é afetado por vários atributos

 computed: {
    
    
    btnText(){
    
    
      return this.totalCount !== 0 ? `${
      
      this.totalCount}s`: "获取验证码"
    }
  } 

Às vezes, você também pode usar get e set

computed: {
    
    
  list: {
    
    
    get() {
    
    
        return this.$store.state.list
    },
    set(value) {
    
    
        this.$store.commit('updateList', value)
    }
  }
}

Assistir

Watch é para monitorar a mudança do valor nos dados. Quando o atributo nos dados muda, a função em watch será executada. Existem dois parâmetros. O primeiro é newVal e o segundo é oldVal. Ao monitorar as alterações de dados de tipo de referência, você precisa realizar um monitoramento profundo ( manipulador + profundo para monitoramento profundo. Imediato: verdadeiro quando a página é carregada pela primeira vez, faça um monitoramento.
Cenário de uso: quando uma alteração de dados afeta vários dados

 watch: {
    
    
 	//a,b,c,d为data里的数据名
    a(newVal, oldVal) {
    
    
      	console.log(newVal, oldVal)
    },
    // 方法名
    b: 'someMethod',
    c: {
    
    
      handler(newVal, oldVal) {
    
    },
      deep: true // 该回调会在任何被侦听的对象的 property 改变时被调用,不论其被嵌套多深,一般用于监听对象
    },
    d: {
    
    
      handler: 'someMethod',
      immediate: true    // 该回调将会在侦听开始之后被立即调用
    },
},

Como monitorar mudanças em vários valores?

O relógio precisa ser usado em conjunto com o computador

computed: {
    
    
   info() {
    
    
      const {
    
     password, userCode } = this
      return {
    
    
          password,
          userCode
      }
   },
   //直接对一个对象尽行深度接听多个属性值
   obj(){
    
    
       return JSON.parse(JSON.stringify(object))
   }
   
},
watch:{
    
    
    info:{
    
    
       handler: function(newval , oldval) {
    
    
          if(newval.password && newval.userCode){
    
    
            this.sign = true
          }else{
    
    
            this.sign = false
          }
       },
       deep:true
   },
   obj:{
    
    
   	   handler: function(newval , oldval) {
    
     xx },
       deep:true
   }
}

Acho que você gosta

Origin blog.csdn.net/m0_48076809/article/details/106885948
Recomendado
Clasificación