首页 > 其他分享 >uniapp不能直接修改props的数据原理浅析

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

时间:2024-12-29 09:55:19浏览次数:3  
标签:uniapp Vue prop 修改 params 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;
  }
}

标签:uniapp,Vue,prop,修改,params,props,组件,浅析
From: https://blog.csdn.net/weixin_44309299/article/details/144799968

相关文章

  • uniapp - 解决安卓APP运行到真机显示未检测到手机或模拟器,HBuilderX真机调试未检测到
    前言关于此问题网上的教程都无法解决,如果您的情况与我相似,即可解决。在uniappApp项目开发中,解决开发app运行到真机时显示“没有检查到设备”将项目运行到Android手机真机调试却检测不到,实际上已经插上USB数据线了,也开启进入了开发者模式怎么调也识别不到,非常恶心的......
  • 基于java的SpringBoot/SSM+Vue+uniapp的员工日志管理信息系统的详细设计和实现(源码+l
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • uniapp项目打包为桌面应用的方法步骤
    1、在控制台安装electroncnpminstallelectron-g2、在控制台安装electron-packagercnpminstallelectron-packager-g3、uniapp的manifest.json修改image.png运行的基础路径修改为:./不然打包出来会出现白屏,读取不到,因为打包出来的h5默认加载地址为/static/去掉启用h......
  • uniapp同城圈子系统开发,社交论坛小程序功能测试,多端交付
    多客圈子系统基于TP6+Uni-app框架开发,客户移动端采用uni-app开发,管理后台使用TH6开发,数据库采用MySQL等关系型数据库。在圈子系统的开发过程中,功能测试是确保系统质量和稳定性的关键步骤。以下是对圈子系统进行功能测试的详细方法:圈子系统源码获取/教程:​​​​​​h......
  • Midjourney技术浅析(一)
    Midjourney 是一款基于人工智能的图像生成工具,能够根据用户输入的文本描述生成高质量的图像。其核心技术涉及多个领域,包括自然语言处理(NLP)、计算机视觉(CV)、深度学习(DL)等。一、Midjourney的工作原理概述Midjourney 的工作流程如下:1.文本理解与编码(TextUnderstandingand......
  • 基于SpringBoot+Vue+Uniapp的公开课管理小程序(毕业设计/课程设计源码+论文+部署)
    文章目录前言文档图(系统结构图、ER图、用例图等)详细视频演示本系统运行效果图后台管理技术框架后端采用SpringBoot框架前端框架Vue选题推荐(部分)成品项目展示(部分)系统测试系统测试的目的系统功能测试代码参考为什么选择我?获取源码前言......
  • 基于Uniapp + SpringBoot + Vue的酒店管理APP(毕业设计/课程设计源码+论文+部署)
    文章目录前言文档图(系统结构图、ER图、用例图等)详细视频演示本系统运行效果图后台管理技术框架后端采用SpringBoot框架前端框架Vue选题推荐(部分)成品项目展示(部分)系统测试系统测试的目的系统功能测试代码参考为什么选择我?获取源码前言......
  • 基于java的SpringBoot/SSM+Vue+uniapp的小型企业办公自动化系统的详细设计和实现(源码
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 从0开始学uniapp——认识HBuilderX
    为什么使用uniapp:可以多端运行,写好了这一套可以用在h5,安卓程序,小程序多端,很方便。 1.百度搜HBuilderX,使用该编译器学习uniapp2.新建一个默认项目pages——用于存放页面,这里都是.vue后缀的页面,pages.json——用于存放路由pages数组里按例子添加即可, HBuilderX提供一个很方......
  • uniapp 酒店入离日期组件
    <template><transitionname="fade"><divclass="calendar-tz"v-if="isShow":class="isFixed&&'fixed'"><slotname="header"></slot><div......