父组件数据更新后通过属性传递给子组件,子组件页面未更新问题记录

server/2025/1/18 9:31:55/
htmledit_views">

改老项目bug时,发现父组件数据更新后通过属性传递给子组件,子组件页面未更新;查看代码原来是使用shallowRef定义的属性导致的;这里记录一下

子组件如下

html" title=javascript>javascript"><template>
<ul><li v-for="b in filterList" :key="b.text" v-text="b.text" @click="click(b)"></li>
</ul>
</template><script setup>
const props = defineProps({list: {type: Array,default: []})
})
const filterList = computed(() => props.list.filter(item => item.auth))
</script>

父组件定义shallowRef,并通过push增加数据

html" title=javascript>javascript"><template><child :list="arr" />
</template><script setup>
const arr = shallowRef([])
const getData = async () => {// 调用接口const data = await getPageList()data.forEach((item) => {// 通过push增加数据arr.value.push(item)})
}
</script>

由于arr定义为shallowRef,只有arr.value具有响应式,通过push增加数据并不会触发响应式,故页面未更新。

解决办法:

1、使用ref 改为深层响应式;

2、使用 arr.value.push 方法后,通过 triggerRef(arr)强制触发;

3、先定义一个变量push数据,之后将这个变量赋值给arr.value;

html" title=javascript>javascript"><script setup>
const arr = shallowRef([])
const getData = async () => {const data = await getPageList()// 定义临时变量const tempList = []data.forEach((item) => {tempList .push(item)})// 赋值arr.value = tempList
}
</script>

4、使用reactive或html#shallowreactive" rel="nofollow" title="shallowReactive">


http://www.ppmy.cn/server/159319.html

相关文章

学成在线_内容管理模块_创建模块工程

学成在线模块工程 1.各个微服务依赖基础工程2.每个微服务都是一个前后端分离的项目3.xuecheng-plus-content&#xff1a;内容管理模块工程xuecheng-plus-content-modelxuecheng-plus-content-servicexuecheng-plus-content-api 1.各个微服务依赖基础工程 2.每个微服务都是一个前…

Openstack持久存储-Swift,Cinder,Manila三者之间的区别

总结不易&#xff0c;给个三连吧&#xff01;&#xff01;&#xff01; 补充&#xff1a; 文件共享存储服务Manila 在OpenStack生态系统中&#xff0c;Cinder和Manila分别提供了两种不同类型的存储服务&#xff0c;类似于传统的SAN&#xff08;存储区域网络&#xff09;和NAS&…

数据结构(堆)

一.概念及其介绍 1.堆(Heap)是计算机科学中一类特殊的数据结构的统称。 堆就是以二叉树的顺序存储方式来存储元素&#xff0c;同时又要满足父亲结点存储数据都要大于等于儿子结点存储数据&#xff08;也可以是父亲结点数据都要小于等于儿子结点数据&#xff09;的一种数据结构…

从零深度学习:(2)最小二乘法

今天我们从比较简单的线性回归开始讲起&#xff0c;还是一样我们先导入包 import numpy as np import torch import matplotlib as mpl import matplotlib.pyplot as plt a torch.arange(1,5).reshape(2,2).float() a 我们利用刚刚导入的画图的包将这两个点画出来&#xff0…

数据结构-栈队列OJ题

文章目录 一、有效的括号二、用队列实现栈三、用栈实现队列四、设计循环队列 一、有效的括号 (链接&#xff1a;ValidParentheses) 这道题用栈这种数据结构解决最好&#xff0c;因为栈有后进先出的性质。简单分析一下这道题&#xff1a;所给字符串不是空的也就是一定至少存在一…

C# 线程基础之 线程同步

线程同步的手段很多 lock 是通过内存索引块 0 1 切换 进行互斥的实现 互斥量 信号量 事件消息 其实意思就是 一个 标记量 通过这个标记 来进行类似的互斥手段 具体方式的分析 代码在后 1.互斥量 Mutex 作用 非常类似lock 一个Mutex 名称来代替 lock的引用对象 2.信号量 Semaph…

ASP.Net Identity + IODC 解析ReturnUrl

Identity Ids4 配置 成认证服务 一、创建 Identity身份验证 项目 创建的项目结构中 没有 注册和登录的 控制器和视图 配置数据库地址 》》默认已经生成了Miagratin 直接update-database 二、在Identity项目 配置 IdentityServer4 Nuget 两个包 》》》配置Config 类 usin…

鸿蒙Flutter实战:16-无痛开发指南(适合新手)

本文讲述如何通过 Flutter 开发鸿蒙原生应用。整个过程结合往期文章、实战经验、流程优化&#xff0c;体验丝滑、无痛。 无痛搭建开发环境 为了减少疼痛&#xff0c;这里使用全局唯一的 Flutter 版本开发。高阶用法可以参看往期同系列文章。 硬件准备 一台 Mac&#xff0c;一部…