vue3 reactive包裹数组无法页面无法响应式

原代码如下:

javascript 复制代码
<div class="section" v-for="(item, i) in historyAccount" :key="i" v-show="item.flag">
   <span v-html="changeColor(item)"></span>
   <img src="@/assets/images/login/clearUserName3x.svg" @click="removeItem(item)" />
 </div>
//历史登录账号数据
let historyAccount = reactive([
  {
    phone: '18896722354',
    flag: false
  },
  {
    phone: '15056678907',
    flag: false
  }
])

//这里用filter方法删除所循环的historyAccount的值
function removeItem(item) {
  console.log(item)
  historyAccount = historyAccount.filter(ele => ele.phone !== item.phone)
  console.log(historyAccount)
}

此时removeItem方法运行,打印出historyAccount的值确实被改变了,但是页面还是没有变化

原因:

如果你直接通过赋值的方式改变reactive对象引用的数组,是不会触发视图的更新的,应该使用 Vue 提供的响应式方法来更新响应式数据。

改进:可以利用splice方法删除数组

javascript 复制代码
function removeItem(item) {
  const index = historyAccount.findIndex(ele => ele.phone == item.phone)
  if (index !== -1) {
    historyAccount.splice(index, 1)
  }
  console.log(historyAccount)
}
相关推荐
心中无石马3 分钟前
uniapp引入tailwindcss4.x
前端·css·uni-app
焰火199923 分钟前
[Vue]可重置的响应式状态reactive
前端·vue.js
陆枫Larry24 分钟前
CSS transform scale:图片放大效果背后的原理
前端
老王以为33 分钟前
为什么 React 和 Vue 不一样?
前端·vue.js·react.js
web打印社区35 分钟前
2026最新Web静默打印解决方案,无插件无预览,完美替代Lodop
前端·javascript·vue.js·electron·pdf
这个DBA有点耶1 小时前
分组排名不用窗口函数?那你还在写几十行的子查询
前端·代码规范
ZhiqianXia1 小时前
《The Design of Design》阅读笔记
前端·笔记·microsoft
有马贵将1 小时前
【5】微前端知识点总结
前端·架构
mkae1 小时前
eBPF高性能版fail2ban
前端
_柴富自由1 小时前
前端项目国际化解决方案
前端