• 技术文章 >web前端 >Vue.js

    vue watch用法是什么

    coldplay.xixicoldplay.xixi2020-11-17 15:31:32原创344

    vue watch用法是:1、当fullName值变化时,watch监听到并且执行;2、watch执行handler方法和immediate属性;3、使用deep属性,深度监听,常用语对象下面属性的改变。

    【相关文章推荐:vue.js

    vue watch用法是:

    1、基本用法:

    当fullName值变化时,watch监听到并且执行

    <div>
          <p>FullName: {{fullName}}</p>
          <p>FirstName: <input type="text" v-model="firstName"></p>
    </div>
     
    new Vue({
      el: '#root',
      data: {
        firstName: 'Dawei',
        lastName: 'Lou',
        fullName: ''
      },
      watch: {
        firstName(newName, oldName) {
          this.fullName = newName + ' ' + this.lastName;
        }
      } 
    })

    2、handler方法和immediate属性

    上面的例子是值变化时候,watch才执行,我们想让值最初时候watch就执行就用到了handlerimmediate属性

    watch: {
      firstName: {
        handler(newName, oldName) {
          this.fullName = newName + ' ' + this.lastName;
        },
        // 代表在wacth里声明了firstName这个方法之后立即先去执行handler方法,如果设置了false,那么效果和上边例子一样
        immediate: true
      }
    }

    3、deep属性(深度监听,常用语对象下面属性的改变)

    <div>
          <p>obj.a: {{obj.a}}</p>
          <p>obj.a: <input type="text" v-model="obj.a"></p>
    </div>
     
    new Vue({
      el: '#root',
      data: {
        obj: {
          a: 123
        }
      },
      watch: {
        obj: {
          handler(newName, oldName) {
             console.log('obj.a changed');
          },
          immediate: true
        }
      } 
    })

    我们在在输入框中输入数据视图改变obj.a的值时,我们发现是无效的。受现代 JavaScript 的限制 (以及废弃 Object.observe),Vue 不能检测到对象属性的添加或删除。由于 Vue 会在初始化实例时对属性执行 getter/setter 转化过程,所以属性必须在 data 对象上存在才能让 Vue 转换它,这样才能让它是响应的。

    默认情况下 handler 只监听obj这个属性它的引用的变化,我们只有给obj赋值的时候它才会监听到,比如我们在 mounted事件钩子函数中对obj进行重新赋值:

    mounted: {
      this.obj = {
        a: '456'
      }
    }

    那么我们需要监听obj里的属性a的值呢?这时候deep属性就派上用场了:

    watch: {
      obj: {
        handler(newName, oldName) {
          console.log('obj.a changed');
        },
        immediate: true,
        deep: true
      }
    }

    这样的方法对性能影响很大,修改obj里面任何一个属性都会触发这个监听器里的 handler。我们可以做如下处理:

    watch: {
      'obj.a': {
        handler(newName, oldName) {
          console.log('obj.a changed');
        },
        immediate: true,
        // deep: true
      }
    }

    watch的注销这里就不在多说了,实际开发中,watch会随着组件一并销毁。

    相关免费学习推荐:javascript(视频)

    以上就是vue watch用法是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:vue watch用法
    上一篇:了解vue.js中的常用指令(总结) 下一篇:vue.js图片怎么渲染
    大前端线上培训班

    相关文章推荐

    • 监听方法watch• vue中computer与watch区别• Vue中Computed属性、Methods和Watch之间的差异• 详解vue.js中watch的使用

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网