vue数据更新后视图不更新解决办法

我是在template中用了v-if=flag来控制展示,在js中数据发生改变我发现展示不对,而flag的值确实发生了改变,true和false的定义也没有错误。

经过我一通百度之后用了

1.

this.$nextTick这个方法作用是当数据被修改后使用这个方法会回调获取更新后的dom再渲染出来,

但是我用没起作用

2.

更新数据后调用 this.$forceUpdate() 方法

这个方法会强制更新视图和数据,触发updated生命周期

最后使用了这个方法成功了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 3中,`setup`函数中返回的响应式对象使用的是`ref`和`reactive`。当你在`setup`中创建响应式数组时,你需要使用`reactive`而不是`ref`。因为`ref`是用来包装单一的值,而不是数组。 如果你使用了`reactive`来创建响应式数组,但是视图在数组更新后仍然没有更新,可能是因为你直接修改了数组的某个元素,而没有使用Vue提供的修改数组的方法,比如`push`、`pop`、`shift`、`unshift`、`splice`等。这些方法会触发Vue的响应式系统来更新视图。 如果你不想使用Vue提供的方法来修改数组,你可以手动调用`trigger`方法来通知Vue更新视图,例如: ```js import { reactive, trigger } from 'vue' const state = reactive({ list: ['item1', 'item2', 'item3'] }) function updateList() { state.list[0] = 'new item' trigger(state, 'list') } ``` 在上面的示例中,我们手动修改了数组的第一个元素,然后调用了`trigger`方法来通知Vue更新`list`这个响应式数组的视图。 另外,还需要注意的是,如果你在`setup`函数中使用了`computed`来计算数组的值,那么你需要将该`computed`放在数组的依赖项中,以确保数组更新时计算属性能够重新计算并更新视图。例如: ```js import { reactive, computed } from 'vue' const state = reactive({ list: ['item1', 'item2', 'item3'], count: 0 }) const computedList = computed(() => { state.count // 将count放在依赖项中 return state.list.map(item => item.toUpperCase()) }) ``` 上面的示例中,我们将`count`放在了`computedList`的依赖项中,这样当数组更新时,`computedList`会重新计算并更新视图

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值