当前位置: 首页 > news >正文

Vue3:reactive丢失响应式,数据有更新但表单没有更新

出现问题:数据有更新但表单没有更新

使用reative定义了一个数组对象

let userHouseList = reative<HouseListInter>([])

在表单中使用

    <el-table :data="userHouseList" stripe border style="width: 100%" height="500">

 通过分页展示数据,分页查询会触发查询并将结果赋值给数组对象

// 分页查询
const pageUserHouseList = () => {queryData.value.pageNum = currentPage.valuequeryData.value.pageSize = pageSize.valuepageUserHouse(queryData.value).then((res) => {userHouseList = res.data.listtotal.value = res.data?.total})
}const handleSizeChange = (newSize: number) => {pageSize.value = newSize;pageUserHouseList();
};const handleCurrentChange = (newPage: number) => {currentPage.value = newPage;pageUserHouseList();
};

通过进行console.log输出,发现成功将查询的数据赋值了,但表单并没有更新。

解决:查看了官方文档,发现reative响应式存在局限

reative() API 有一些局限性:

  1. 有限的值类型:它只能用于对象类型 (对象、数组和如 MapSet 这样的集合类型)。它不能持有如 string、number或 boolean这样的原始类型。

  2. 不能替换整个对象:由于 Vue 的响应式跟踪是通过属性访问实现的,因此我们必须始终保持对响应式对象的相同引用。这意味着我们不能轻易地“替换”响应式对象,因为这样的话与第一个引用的响应性连接将丢失:

    let state = reactive({ count: 0 })// 上面的 ({ count: 0 }) 引用将不再被追踪
    // (响应性连接已丢失!)
    state = reactive({ count: 1 })
  3. 对解构操作不友好:当我们将响应式对象的原始类型属性解构为本地变量时,或者将该属性传递给函数时,我们将丢失响应性连接:

    const state = reactive({ count: 0 })// 当解构时,count 已经与 state.count 断开连接
    let { count } = state
    // 不会影响原始的 state
    count++// 该函数接收到的是一个普通的数字
    // 并且无法追踪 state.count 的变化
    // 我们必须传入整个对象以保持响应性
    callSomeFunction(state.count)
  • 由于这些限制,我们建议使用 ref() 作为声明响应式状态的主要 API。

  • 使用ref可以解决

  • let userHouseList = ref<HouseListInter>([])

       赋值的时候调用.value

    userHouseList.value = res.data.list

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法,亲测有效!!!
  • Python模块和包:标准库模块(os, sys, datetime, math等)②
  • 邮件营销:助力企业转换客户,提升曝光率
  • Redis实践之缓存:设置缓存过期策略
  • web基础+http协议+httpd详细配置
  • docker中图形化界面的转发
  • 大模型技术新手指南:从零开始的全方位教程
  • 二叉树算法
  • Vivado FIR IP 详解 (一)
  • 初始c++:入门基础(完结)
  • 【Mac】系统环境配置
  • 【算法】栈与模拟
  • Vue.js 与后端配合:打造强大的现代 Web 应用
  • 视频格式转为mp4(使用ffmpeg)
  • PCIe扫盲(10)
  • 【node学习】协程
  • 10个最佳ES6特性 ES7与ES8的特性
  • Android 架构优化~MVP 架构改造
  • Android单元测试 - 几个重要问题
  • CSS相对定位
  • flutter的key在widget list的作用以及必要性
  • github从入门到放弃(1)
  • java概述
  • MYSQL 的 IF 函数
  • node学习系列之简单文件上传
  • SAP云平台里Global Account和Sub Account的关系
  • Vue--数据传输
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 构建二叉树进行数值数组的去重及优化
  • 汉诺塔算法
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 前端攻城师
  • 网页视频流m3u8/ts视频下载
  • 异常机制详解
  • 译自由幺半群
  • 应用生命周期终极 DevOps 工具包
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 主流的CSS水平和垂直居中技术大全
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (23)Linux的软硬连接
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (MATLAB)第五章-矩阵运算
  • (Python) SOAP Web Service (HTTP POST)
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (三)Honghu Cloud云架构一定时调度平台
  • (三)模仿学习-Action数据的模仿
  • (三)终结任务
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (转)程序员疫苗:代码注入
  • ***通过什么方式***网吧
  • .Net Web窗口页属性
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)