首页 > 其他分享 >[Vue warn]: Avoid mutating a prop directly since the value will be overwritten vue报错

[Vue warn]: Avoid mutating a prop directly since the value will be overwritten vue报错

时间:2024-07-01 10:30:07浏览次数:15  
标签:overwritten Vue prop will 报错 组件 属性 data dialogVisibleEdits

[Vue warn]: 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: "dialogVisibleEdits"

这个警告信息是 Vue.js 框架给出的,意味着你在子组件中直接修改了从父组件传递过来的属性(prop)dialogVisibleEdits。在 Vue 中,props 是单向数据流的一部分,意味着它们应该只从父组件流向子组件,而不应该被子组件修改。

如果你试图在子组件中直接改变 dialogVisibleEdits 的值,这会导致当父组件重新渲染时,你在子组件中做的任何修改都会被父组件传递过来的新值覆盖。

我遇到这个情况不是我手动修改从父组件传过的值,而是我把ui组件的弹框封装成了子组件,在执行右上角叉号“X”关闭时,报错的,找了好久,没找到原因,可能是组件的内部执行的,后来我就给传过来的值,用computed计算属性,这才解决问题,对此,有感而发,建议以后父组件传过来的值,子组件需要更改时的情况,建议先计算属性赋值,再使用 data 属性给其赋一个变量,就可随意修改了~,这样也可实现页面加载时,子组件的dom即使渲染出来~

为了解决这个问题, 建议你使用以下方法之一:

  1. 使用 data 属性:在子组件中创建一个新的 data 属性,并将 prop 的值赋给它。然后你可以修改这个 data 属性而不会影响到 prop。

    export default {  
      props: ['dialogVisibleEdits'],  
      data() {  
        return {  
          localDialogVisibleEdits: this.dialogVisibleEdits  
        };  
      },  
      // 后续你可以修改 localDialogVisibleEdits 而不是 dialogVisibleEdits  
    };

  2. 使用计算属性:如果你只是想基于 prop 的值做一些计算或转换,而不改变它本身,你可以使用计算属性。

    export default {  
      props: ['dialogVisibleEdits'],  
      computed: {  
        // 这里可以返回一些基于 dialogVisibleEdits 的计算值  
        computedDialogVisibleEdits() {  
          // 示例:简单返回 prop 值,但你可以添加任何你需要的逻辑  
          return this.dialogVisibleEdits;  
        }  
      },  
      // 使用 computedDialogVisibleEdits 而不是 dialogVisibleEdits  
    };

       父组件:

<child-component :dialogVisibleEdits.sync="parentDialogVisibleEdits"></child-component>

或者:

// 在父组件中  
methods: {  
  handleDialogVisibilityUpdate(newValue) {  
    this.parentDialogVisibleEdits = newValue; // 更新 prop 绑定的数据  
  }  
}  
// 并在模板中监听事件

注意:.sync 修饰符是 Vue 2.3.0+ 提供的一个语法糖,它会自动扩展成一个 update:myPropName 事件监听器。

标签:overwritten,Vue,prop,will,报错,组件,属性,data,dialogVisibleEdits
From: https://blog.csdn.net/qq_36851010/article/details/140092502

相关文章

  • 乌班图Ubuntu 24.04初始化MySQL报错error while loading shared libraries: libaio.so
    由于乌班图24.04LTS已经发布了,因此准备新业务逐步往这上面迁移,毕竟支持有效期比22.04更长准备在24.04上进行MySQL的初始化,因为习惯自定义安装存储目录,所以使用mysql-8.0.37-linux-glibc2.28-x86_64.tar.xz这个最新的二进制版本。按照22.04版本整理的安装笔记进行操作,第一步安装......
  • 【使用sudo apt-get出现报错】——无法获得锁 /var/lib/dpkg/lock-open(11:资 源暂时
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、ubuntu中进程正在被占用1.问题描述2.原因分析3.解决总结前言一、ubuntu中进程正在被占用1.问题描述在Ubuntu中,使用终端时输入带有sudoapt-get指令更新软件包时,出现如下的报......
  • 【转】Androidstudio报错Algorithm HmacPBESHA256 not available
     删除debug.keystone这个文件就可以了。 https://blog.csdn.net/O_PUTI/article/details/138227534 -----参考了更改GradleJDK等的办法都没有用,最终通过一个一个问题拍错解决。第一个问题:版本不一致 第二个问题秘钥获取不成功:删除这个文件 然后就编译成功了。......
  • Fastapi 项目第二天首次访问时数据库连接报错问题Can't connect to MySQL server
    问题描述Fastapi项目使用sqlalchemy连接的mysql数据库,每次第二天首次访问数据库相关操作,都会报错:sqlalchemy.exc.OperationalError:(pymysql.err.OperationalError)(2003,"Can'tconnecttoMySQLserveron'x.x.x.x'([Errno111]Connectionrefused)")问题分析从出......
  • flutter项目报错[!] The ‘Pods-Runner‘ target has transitive dependencies that i
    运行flutter项目报错[!]The'Pods-Runner'targethastransitivedependenciesthatincludestaticallylinkedbinaries:(AMap2DMap/MAMapKit.framework,AMapLocation/AMapLocationKit.framework,andPods/AMapSearch/AMapSearchKit.framework)解决方案:使用静态框架......
  • 51 stm32开发关于keil mdk的软件配置常用设置 以及 可能会出现的报错总结
    首先左上角那个魔术棒中,是关于下载烧录软件编译的option选择我们点开他进入target需要我们配置的就两处,1:Xtal:填8.0mhz只是因为要填个数代表stm32(外部高速晶振)或(其他晶振)作为主频时钟的时钟源时的晶振大小方便烧录时对一些代码(对芯片的时钟要求高的代码)的自动编译,实际上......
  • 遇到的编译报错提示
    编译报错wayland-clientsudoaptinstalllibwayland-devwayland-protocols>=1.24下载DEB包直接安装glslangValidatorrequiredbyvulkantestsnotfoundsudoaptinstallglslang-toolsNinja首先安装:sudoaptinstallninja-buildcmake.-GNinjacmake--......
  • 同样的软件版本、安装方法,但互联网环境就没有报错,是不是哪个地方设置不对?
    大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【斌】问了一个Python第三方库离线下载后使用失败的问题,问题如下:再次请教大佬,还是上述问题,同样的软件版本、安装方法,但互联网环境就没有报错,是不是哪个地方设置不对?@隔壁......
  • OCP4.2.2 主机标准化检查系统配置项修复clocksource 报错
    适应版本:社区版本OCP:4.2.2-20240315150922背景描述OCP纳管主机后进行主机标准化时,setclocksource一直没有成功   自动修复后还是有问题 分析过程查看官方ocp.4.2文档,有相关信息 执行相关命令再次查看文件并未写入tsc 重新检查 自动修复,......
  • java使用@Controller注解跳转到thmyleaf页面时候报错
     报错如下######当我使用RestController时候接口可以得到返回的对象↓但是查看RestController和Controller的区别之后:也就是说@RestController返回的是一个对象,@Controller默认情况下,方法的返回值会被解析为一个视图名称,并寻找与该名称匹配的视图进行渲染。这意味着返回......