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)
}
相关推荐
king王一帅3 小时前
Incremark Solid 版本上线:Vue/React/Svelte/Solid 四大框架,统一体验
前端·javascript·人工智能
智航GIS7 小时前
10.4 Selenium:Web 自动化测试框架
前端·python·selenium·测试工具
前端工作日常8 小时前
我学习到的A2UI概念
前端
徐同保8 小时前
为什么修改 .gitignore 后还能提交
前端
一只小bit8 小时前
Qt 常用控件详解:按钮类 / 显示类 / 输入类属性、信号与实战示例
前端·c++·qt·gui
Mr -老鬼9 小时前
前端静态路由与动态路由:全维度总结与实践指南
前端
颜酱9 小时前
前端必备动态规划的10道经典题目
前端·后端·算法
wen__xvn9 小时前
代码随想录算法训练营DAY10第五章 栈与队列part01
java·前端·算法
38242782710 小时前
JS表单验证:className与classList区别详解
js
大怪v10 小时前
前端佬们!!AI大势已来,未来的上限取决你的独特气质!恭请批阅!!
前端·程序员·ai编程