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)
}
相关推荐
乘风gg8 小时前
Spec Kit vs OpenSpec vs Superpowers:三大 AI Coding 框架深度对比
前端·ai编程·claude
w2sfot8 小时前
AI时代,JS加密还有效吗?
开发语言·前端·javascript
风骏时光牛马8 小时前
AI服务线上接口异常导致响应中断
前端
haluhalu.8 小时前
Agent = LLM + 上下文 + 工具(含观察 / 动作空间、ReAct 循环)
前端·javascript·人工智能·python·react.js·机器学习·个人开发
子兮曰14 小时前
把 649 种文件格式塞进一个网页里:一个「文件不出浏览器」的预览器
前端·javascript·后端
sm_9267870517 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
IMPYLH17 小时前
HTML 的 <video> 元素
前端·html
溪语流沙18 小时前
【每天一个CSS | Day19】流光文字与一笔写成的手写签名
前端·javascript·css
逐光者93318 小时前
STM32——SPI 屏 · Flash · 高速
java·前端·stm32
To_OC18 小时前
同样是让 AI 写全栈,为什么别人一句话就够了
前端·前端框架·next.js