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

相关推荐
醉逍遥neo19 小时前
mac新电脑-前端开发配置
前端·macos·ghostty
白嫖叫上我20 小时前
Vue3封装主题色完善版
前端
a11177620 小时前
细胞结构实验室(react 开源)
前端·javascript·开源·html
aaaak_20 小时前
PDD 直播间 评论 , wss hex Protobuf 解析流程分析学习
java·前端·学习
ikoala20 小时前
用了几周明基 RD280UG,我终于明白程序员为什么需要一台“专用显示器”
前端·后端·程序员
Dxy123931021620 小时前
JS如何获取元素高度
开发语言·javascript·ecmascript
文心快码BaiduComate20 小时前
Comate搭载DeepSeek-V4
前端·后端
豹哥学前端20 小时前
5分钟搞懂事件委托
前端·javascript·面试
Awu122720 小时前
🍎把数学公式搬进 Web 表格:一个 VTable 实战案例
前端
江无行者20 小时前
aly oss技能应用
前端