vue3父组件改变 子组件不改变(uniapp)

项目中遇到了这么个问题

场景:封装select组件,通过子组件选中后传递值给父组件,父组件需要回显这个值(这里使用 defineProps和defineEmits就可以实现,或者直接使用defineModel也可以实现,但是uniapp目前不支持),使用后父组件确实是拿到值了,但是子组件回显不出来,打印父组件确实是有这个值并且是响应式的

排查结果:子组件在接收defineProps的时候是处于setup生命周期里面,也就是只会触发一次defineProps,所以子组件接收不到后续的值

解决方法:

1:使用定时器定时拿取defineProps

结果:性能消耗过大,并且你封装肯定不止一个地方使用,直接pass

2:使用watch监听

javascript 复制代码
watch(()=>echo.value,(New, Old) => {
console.log(`新值:${New} --------- 老值:${Old}`)
})

结果:监听不到这个值的变化

3:使用watchEffect监听

javascript 复制代码
watchEffect(() => {
        echo.value = data.value
    })

结果:成功解决,在这个函数里再赋一次值即可

官方地址:响应式 API:核心 | Vue.js

相关推荐
hadage233几秒前
--- vue标签中有key和没有的区别 ---
vue.js
裴嘉靖4 分钟前
uniapp做的APP和安卓苹果做的什么区别
前端
申阳5 分钟前
Day 20:开源个人项目时的一些注意事项
前端·后端·程序员
拾晚霞6 分钟前
【Vue2-Niubility-Uploader】一个强大的 Vue2 文件上传解决方案
vue.js
天蓝色的鱼鱼11 分钟前
大文件上传实战:基于Express、分片、Web Worker与压缩的完整方案
前端·node.js
500佰14 分钟前
解读NotebookLM基于AI的PTT生成 程序化处理方法
前端·google·程序员
前端老宋Running14 分钟前
别再给组件“打洞”了:这才是 React 组件复用的正确打开方式
前端·javascript·前端框架
u***284715 分钟前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
chilavert31817 分钟前
技术演进中的开发沉思-224 Ajax面向对象与框架
javascript·okhttp
pcm12356718 分钟前
java中用哈希表写题碰到的误区
java·前端·散列表