vue视图更新问题记录

1、对象新属性无法更新视图,删除属性无法更新视图,怎么办?

  • 原因:Object.defineProperty 没有对对象的新属性进行属性劫持
  • 对象新属性无法更新视图:使用 Vue.$set(obj, key, value),组件中 this.$set(obj, key, value)
  • 删除属性无法更新视图:使用 Vue.$delete(obj, key),组件中 this.$delete(obj, key)

2、直接 arr[index] = xxx 无法更新视图怎么办?

  • 原因:Vue 没有对数组进行 Object.defineProperty 的属性劫持,所以直接 arr[index] = xxx 是无法更新视图的
  • 使用数组的 splice 方法,arr.splice(index, 1, item)
  • 使用 Vue.$set(arr, index, value)

3、相同的路由组件如何重新渲染?

多个路由解析为同一个 Vue 组件。问题是,Vue出于性能原因,默认情况下共享组件将不会重新渲染,如果你尝试在使用相同组件的路由之间进行切换,则不会发生任何变化。

const routes = [
  {
    path: "/a",
    component: MyComponent
  },
  {
    path: "/b",
    component: MyComponent
  },
];

如果依然想重新渲染,怎么办呢?可以使用 key

<template>
  <router-view :key="$route.path"></router-view>
</template>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

圆周率呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值