前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue watch和computed的使用场景

vue watch和computed的使用场景

原创
作者头像
愤怒的小鸟
修改2021-02-08 10:00:23
6560
修改2021-02-08 10:00:23
举报
文章被收录于专栏:web shareweb share
  • watch 监听某个数据的变化(监听完调用什么函数) 一个数据影响多个数据 (比如:浏览器自适应、监控路由对象、监控自身属性变化)
  • computed 计算后返回新 一个数据受多个数据影响(比如:计算总价格、过滤某些数据)

watch 场景:

1、自适应浏览器(监听浏览器宽高、如果有变化就存在localStorage里面去,或者有变化就通知其他组件改变化)

代码语言:javascript
复制
watch: {
  // 如果发生改变,这个函数就会运行
  height() {
    this.changeFixed(this.width, this.height)
    // eventBus.$emit('onresize', {'height': this.height }) 或者通知其他组件变化
  }
},
methods: {
  changeFixed(width, height) { // 动态修改样式
    localStorage.setItem('Layout', JSON.stringify({'height': height }))
  }
}

2、监控路由对象

代码语言:javascript
复制
 watch: {
   '$route': function(newroute, oldroute) {
    console.log(newroute, oldroute);
    // 可以在这个函数中获取到当前的路由规则字符串是什么
    // 那么就可以针对一些特定的页面做一些特定的处理
 }

computed 场景:

1、作为过滤器:展开更多

代码语言:javascript
复制
computed:{
  addressListFilter(){
    return this.addressList.slice(0,this.limit);
  }
}

2、作为过滤器:tab切换

代码语言:javascript
复制
computed: {
  taskListfilter() {
    switch (this.type) {
      case 0: return this.taskList
      case 1: return this.taskList.filter(item => item.type === '实时单')
      case 2: return this.taskList.filter(item => item.type === '竞价单')
      // default :return this.taskList
    }
 }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • watch 场景:
  • computed 场景:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档