在uni-app中,如果data中的对象属性改变了,但是页面没有相应更新的情况,通常有以下几点需要注意:

1. 使用this.$set更新对象属性直接修改对象属性是无法触发页面更新的,需要使用this.$set方法:

this.$set(this.obj, 'key', value)

2. 确保数据层级不太深如果对象层级过深,改变内层属性也可能无法触发更新。建议关键数据不要超过2层。

3. 使用深度 watcher可以在watch中用深度watcher的方式监听整个对象的变化:

watch: {obj: {handler(newVal) {// 对象改变响应逻辑},deep: true} 
}

4. 使用计算属性有些场景可以通过计算属性来响应对象属性变化。

5. 检查是否多次修改同一属性连续多次修改同一属性不会触发多次更新。

注意:

比较推荐的做法是:

  1.  默认使用 this.$set 更新对象属性this.$set 是 uni-app 提供的接口,可以显式触发属性改变的响应。使用简单,也相对直观,所以在大多数场景下都是比较好的选择。
  2.  对于层级较深的对象,可以配合深度 watcher 使用如果数据层级很深,只使用 this.$set 可能仍然无法触发更新,这时候可以额外使用 deep watcher 来完整监听对象变化。
  3. 根据需要使用计算属性计算属性可以将依赖的对象属性转换为一个响应式的计算值,在某些场景下可以简化逻辑。
  4.  尽量保持数据层级不要太深这是从根本上减少响应问题的方法。业务数据层级不要超过 3 层。

所以,综合来说: 

  • 默认使用 this.$set 更新对象属性
  • 配合深度 watcher 监听深层级对象变化
  • 根据实际需求适当使用计算属性
  • 保持数据尽量扁平这样可以比较全面地处理对象属性更新页面不响应的问题

eg:

1、使用this.$set更新对象属性

this.$set(this.itemData, 'likeNum', result.length)

2、在watch中用深度watcher的方式

					js// data中定义对象data() {return {user: {name: 'John',age: 20}}}// 深度watch监听对象所有属性变化watch: {user: {handler(val, oldVal) {// 对象被改变时响应},deep: true}}// 后续修改对象属性都会触发handler函数this.user.name = 'Tom' this.user.age = 22

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mcu 启动流程

MCU启动流程 MCU启动流程 MCU启动流程1 MCU的启动方式2 MCU程序启动执行过程3 启动过程的执行工作4 keil调式过程验证5 调试文件map 1 MCU的启动方式 单片机的启动方式,以stm32为例,如下: 不同的下载方式对应的不同的启动方式,st…

truffle 进行智能合约测试

本方法使用了可视化软件Ganache 前两步与不使用可视化工具的步骤是一样的(有道云笔记),到第三步的时候需要注意: 在truffle插件下找到networks目录,提前打开Ganache软件 在Ganache中选择连接或者新建,我在…

如何学习Java集合框架? - 易智编译EaseEditing

要学习Java集合框架相关的技术和知识,可以按照以下步骤进行: 掌握Java基础知识: 在学习集合框架之前,确保你已经具备良好的Java编程基础,包括语法、面向对象编程(OOP)原理和常用的核心类库等。…

MySQL备份与还原/索引/视图

MySQL备份与还原/索引/视图练习 文章目录 一、备份与还原1、使用mysqldump命令备份数据库中的所有表2、备份booksDB数据库中的books表3、使用mysqldump备份booksDB和test数据库4、使用mysqldump备份服务器中的所有数据库5、使用mysql命令还原第二题导出的book表6、进入数据库使…

Gnina split_caffe_proto.py

1. 导入必要的模块:mmap、re、os、errno。 2. 获取当前脚本所在路径的绝对路径作为script_path。 3. 创建用于存放caffe.proto片段的目录结构。脚本尝试创建../docs/_includes/和../docs/_includes/proto/两个目录,若目录已存在则忽略,若创…

STM32案例学习 GY-39环境监测传感器模块

STM32案例学习 GY-39环境监测传感器模块 硬件平台 野火STM32F1系列开发板正点STM32F1系列开发板STM32F103ZET6核心板GY-39环境监测传感器模块 GY-39环境监测传感器模块 GY-39 是一款低成本,气压,温湿度,光强度传感器模块。工作电压 3-5v…

thinkphp 上传图片

public function upload_img(){// 读取图片资源// 存储路径$path "uploads/avatar";$file request()->file(background_img);// 存储图片$info $file->rule(uniqid)->move($path);// 存储成功if ($info) {//获取到上传图片的路径名称$name_img $path . …

linux查看ipynb文件

linux查看ipynb文件 使用jupyter查看 使用jupyter查看 安装 pip install jupyter添加配置好的环境到jupyter notebook的kernel中: python -m ipykernel install --user --name mmdet --display-name "mmdet"运行jupyter notebook (在ipynb…

WebSocket理论和实战

一 WebSocket理论 1.1 什么是http请求 http链接分为短链接、长链接,短链接是每次请求都要三次握手才能发送自己的信息。即每一个request对应一个response。长链接是在一定的期限内保持链接(但是是单向的,只能从客户端向服务端发消息&#x…

pycharm import的类库修改后要重启问题的解决方法

通过将以下行添加到pycharm中的settings-> Build,Excecution,Deployment-> Console-> Python Console中,可以指示Pycharm在更改时自动重新加载模块: %load_ext autoreload %autoreload 2

ubuntu 设置系统时间矫正

1、安装ntpdate,同步标准时间 2、修改时区 3、在.profile文件中写入上面提示的信息,保存退出、更新配置文件或者重启生效 3.1、或者配合上面的cp那条命令,用下面的命令保存到底层 $ hwclock --systohc 4、重启之后,查看日期时间已…

中间件上云部署 rocketmq

中间件上云部署 rocketmq rocketmq部署一、rokectmq介绍二、rokectmq特性三、使用rocketmq理由四、rocketmq 核心概念五、rocketmq角色六、rocketmq集群部署方式七、rocketmq集群部署7.1 环境说明7.2 构建rocketmq镜像7.3 获取rocketmq-dashboard镜像7.4 rocketmq部署描述文件编…

linux安装mysql以及使用navicat连接mysql

目录 一、下载mysql 二、安装mysql 三、使用Navicat连接MySQL 四、常见问题 1、启动服务时报错 Failed to start mysql.service: Unit not found. 的解决方法。 2、登录过程出现:access denied for user’root’‘localhost’(using password:Yes) 的解决方…

Redis的缓存问题

说起Redis的缓存,我们知道前端发出的请求到后端,后端先从Redis中查询,如果查询到了则直接返回,如果Redis中未查询到,就去数据库中查询,如果数据库中存在,则返回结果并且更新到Redis缓存当中&…

Softmax函数

S o f t m a x Softmax Softmax 函数是一种常用的激活函数,通常用于多类别分类问题中。它的原理是将一个向量的元素转化为概率分布,使得每个元素的取值范围在0到1之间,并且所有元素的和为1。 S o f t m a x Softmax Softmax 函数的作用是将原…

<JAVA学习笔记>SpringBoot中的@Retryable重试注解

Retryable注解的功能顾名思义,即重试。它可以作用在方法上,当方法抛出指定的异常时,整个方法将会被重新执行。在使用时需要先在pom.xml中导入相关依赖,再在启动类中添加EnableRetry注释以开启重试功能,最后在相应的方法…

《遗留系统现代化》读书笔记(基础篇)

目录 为什么要对遗留系统进行现代化? 什么是遗留系统? 遗留系统的现代化价值 总结 遗留系统的四化建设 代码现代化 架构现代化 DevOps 现代化 团队结构现代化 总结 本文地址:《遗留系统现代化》读书笔记(基础篇&#xff…

通讯录(纯C语言实现)

相信大家都有过通讯录,今天我来带大家实现以下最简单的通讯录,通过本篇文章,相信可以让大家对C语言有进一步的认识。 话不多说,我们先放函数的实现 #define _CRT_SECURE_NO_WARNINGS 1 #include "Contact.h"int Chea…

【集合排序】List根据对象某一字段排序的六种方法

目录 1.使用List的sort()方法,自定义一个Compartor比较器 2.使用List的sort()方法,Lambda表达式写法【写法很简单,推荐】 3.使用Collections.sort()方法【重写Comparable接口】 4.使用Collections.sort()方法【自定义Compartor比较器】 …

高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测教程

详情点击链接:高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测 第一:预测平台及安装 一、高精度气象预测基础 综合气象观测数值模拟模式; 全球预测模式、中尺度数值模式; 二、自动化预测平台 Linux系统 Crontab…