this.$set的用法,解决视图不更新

有时候对数组或对象操作的时候值改变了视图却没有更新页面没有进行渲染,效果如下

    D9Arr=[
    {name:"",age:""},
    {name:"",age:""},
    {name:"",age:""},
    ]

  computed: {
    typeD9Data() {
      return this.$store.state.webSocketData.typeD9DataA;
    },
  },
    watch:{
          typeD9Data:{
           handler: function (val) {
             switch (val) {
              case 1:
                this.D9Arr[0] = val
                break;
              case 2:
                this.D9Arr[1] = val
                break;
              case 3:
                this.D9Arr[2] = val
                break;
              default:
                break;
             }
           }
        },
    }
   

监听typeD9Data的变化改变D9Arr的值,值改变了视图却没有更新。

使用this.$set 就可以完美的解决这个问题

用法:

调用:this.$set( target, key, value )

target:要更改的数据源(可以是对象或者数组)

key:要更改的具体数据

value :重新赋的值

使用过this.$set过后的代码

  watch:{
          typeD9Data:{
           handler: function (val) {
             switch (val) {
              case 1:
                this.$set(this.D9Arr,0,val)
                break;
              case 2:
                this.$set(this.D9Arr,1,val)
                break;
              case 3:
                this.$set(this.D9Arr,2,val)
                break;
              default:
                break;
             }
           }
        },
    }

总结:对数组或者对象进行各种骚操的时候(赋值、新增属性、修改属性),视图不更新没有渲染就调用this.$set()。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_63701303

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值