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

相关推荐
切糕师学AI1 分钟前
VSCode 下如何检查 Vue 项目中未使用的依赖?
vue.js·vscode
life码农7 分钟前
HTML文本换行显示几种方法总结
前端·html
强子感冒了8 分钟前
CSS基础学习:CSS选择器与优先级规则
前端·css·学习
啟明起鸣15 分钟前
【Nginx 网关开发】上手 Nginx,简简单单启动一个静态 html 页面
运维·c语言·前端·nginx·html
vortex519 分钟前
深度字典攻击(实操笔记·红笔思考)
前端·chrome·笔记
我是伪码农20 分钟前
Vue 1.30
前端·javascript·vue.js
利刃大大29 分钟前
【Vue】默认插槽 && 具名插槽 && 作用域插槽
前端·javascript·vue.js
艳阳天_.32 分钟前
web 分录科目实现辅助账
开发语言·前端·javascript
2601_9498683638 分钟前
Flutter for OpenHarmony 剧本杀组队App实战04:发起组队表单实现
开发语言·javascript·flutter
风之舞_yjf40 分钟前
Vue基础(27)_脚手架安装
vue.js