当前位置: 首页 > article >正文

uniapp不能直接修改props的数据原理浅析

uniapp不能直接修改props的数据

Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "expectDeliveryAt"

避免直接修改prop,因为每当父组件重新渲染时,该值都会被覆盖。相反,请根据data的值使用数据或计算属性。

产生原因:

在 Vue.js 中,一般不推荐在子组件中直接修改 props。这是由于 Vue 的响应式原理决定的。当你将一个对象作为 prop 传递给子组件,并在子组件中修改这个对象的属性,父组件并不能感知到这个修改。这是因为 Vue 只会关注对象属性的 getter 和 setter,当你在子组件中直接修改对象的属性,getter 和 setter 并没有触发,所以 Vue 无法感知到这个修改。

解决方法:

  • v-model 指令或 .sync 修饰符
  • 将修改属性的方法通过 v-bind 传给子组件调用,子组件直接按方法使用即可
  • 将修改属性的方法通过 v-on 传递给子组件调用,使用 $emit() 实现回调修改
  • 或者使用 this.$parent 去修改

实例:

props: ['params'],
  watch: {
  'params.approveStatus': function(newVal, oldVal) {
    this.$emit('update:params', { approveStatus: newVal });
  }
}
<child-component :params="params" @update:params="updateParams"></child-component>

methods: {
  updateParams(newParams) {
    this.params = newParams;
  }
}

http://www.kler.cn/a/458174.html

相关文章:

  • 报错:websocket注入为null,已解决!
  • XML解析
  • Kerberos用户认证-数据安全-简单了解-230403
  • pandas删除值全部为0的整行和整列,还有0.0,0.000000也要删除
  • 【2024年-10月-8日-开源社区openEuler实践记录】深度分析 Gala-Gopher:革新分布式系统运维的开源力量
  • 【mysql】linux安装mysql客户端
  • 《Virt A Mate(VAM)》免安装豪华版v1.22中文汉化整合
  • Nacos配置管理+共享配置、配置热更新
  • [Unity Shader][Unity Shader][图形渲染]Shader数学基础19-选择使用3×3或4×4变换矩阵的技巧
  • 音视频入门基础:MPEG2-TS专题(23)——通过FFprobe显示TS流每个packet的信息
  • 设计宝藏解压密码
  • 单片机优先级
  • Java实现简单爬虫——爬取疫情数据
  • 定义Shape:打造属于你的独特图形
  • YOLOv10目标检测-训练自己的数据
  • LAION-SG:一个大规模、高质量的场景图结构注释数据集,为图像-文本模型训练带来了革命性的进步。
  • leecode377.组合总和IV
  • 【MySQL】十三,关于MySQL的全文索引
  • jangow靶机
  • 【探花交友】day01—项目介绍与环境搭建
  • 10道JavaWeb常问面试题
  • Dify服务器部署教程
  • Python中构建终端应用界面利器——Blessed模块
  • QT笔记- QTreeView + QFileSystemModel 当前位置的保存与恢复 #选中 #保存当前索引
  • 2025年我国网络安全发展形势展望
  • C语言基础学习记录-内存管理