[vue warning] avoid mutating a prop directly
一、问题描述

使用props,通过父组件给子组件传值,子组件在使用props中的属性时,直接对props中的属性进行了修改。修改方式为直接对props中的属性赋值,或者使用双向绑定。
父组件代码:

<categroy :course="item" />

子组件代码:

<template><div class="course-list"><dl class="categroy-dl"><dt>类别</dt><el-tabs v-model="activeName" @tab-click="handleClick"><el-tab-pane label="不限" name="不限"></el-tab-pane><el-tab-pane label="C语言" name="C语言"></el-tab-pane><el-tab-pane label="Java" name="Java"></el-tab-pane><el-tab-pane label="Python" name="Python"></el-tab-pane></el-tabs></dl></div>
</template>
<script>
export default {props: {activeName: {type: String,default: "不限"}},methods: {handleClick(tab, event) {console.log(tab, event);this.$emit("queryCoures", this.activeName);}}
};

此时会抛出警告:vue.runtime.esm.js?2b0e:619 [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: “activeName”. activeName 为Props中的一个属性名。

二、解决方法

通过警告的提示信息可知,在子组件中不可以对父组件通过props传过来的属性进行修改。我们可以使用data或者计算属性转接一下。如果需要同步修改父组件中的值,则需使用$emit调用父组件中的方法对其进行修改。
更改后子组件代码:

<template><div class="course-list"><dl class="categroy-dl"><dt>类别</dt><el-tabs v-model="activeName" @tab-click="handleClick"><el-tab-pane label="不限" name="不限"></el-tab-pane><el-tab-pane label="C语言" name="C语言"></el-tab-pane><el-tab-pane label="Java" name="Java"></el-tab-pane><el-tab-pane label="Python" name="Python"></el-tab-pane></el-tabs></dl></div>
</template>
<script>
export default {props: {categroy: {type: String,default: "不限"}},data() {// categroy不与el-tabs直接双向动态绑定,而是使用categroy为activeName赋初始值,activeName与el-tabs双向动态绑定return { activeName: this.categroy };},methods: {handleClick(tab, event) {console.log(tab, event);// 使用$emit调用父组件的方法,同步categroy的值this.$emit("queryCoures", this.activeName);}}
};
三、总结

在vue2中,直接修改prop是被视作反模式的。由于在新的渲染机制中,每当父组件重新渲染时,子组件都会被覆盖,所以应该把props看做是不可变对象。–参考文档

子组件不可直接修改props中的属性,应该emit一个事件给父组件,让父组件去处理修改。应遵守父子组件之间的传值规范。

【vue warning】avoid mutating a prop directly相关推荐

  1. 【vue报错】【子组件改变父组件数据】 Avoid mutating a prop directly since

    [vue报错] Avoid mutating a prop directly since the value will be overwritten whenever the parent compo ...

  2. 前端开发:Vue报错Avoid mutating a prop directly since the value will be…的解决方法

    前言 前端开发中,在使用Vue开发的时候,经常会遇到一些很共性的报错提示,而且有时候提示已经很明确的告诉开发者问题出现在哪里,尤其是在Chrome的控制台输出上面,只要看一下输出日志就知道问题所在.但 ...

  3. vue 报错avoid mutating a prop directly since the value will be overwritten whenever

    这里写自定义目录标题 avoid mutating a prop directly since the value will be overwritten whenever 子组件修改父组件值时报的错 ...

  4. 【Vue.JS】Render 实现留言板实例及 Avoid mutating a prop directly 错误处理

    声明:文中代码整体思路来源于 梁灏 编著的 [Vue.JS 实战]一书,学习过程中发现一处问题.以做记录 效果图 代码 index.html <!DOCTYPE html> <htm ...

  5. 【VUE】异常解决:Avoid mutating a prop directly since the value will be overwritten

    author: date: 2021.07.03 文章目录 1. 需求及报错 2. 分析原因 2.1 这是什么原因造成? 3. 解决方案: 使用 v-on 明确实现修改方式 4. 参考 1. 需求及报 ...

  6. 【VUE】异常解决:Avoid mutating a prop directly since the value will be overwritten ...

    author: jwensh date: 2021.07.03 文章目录 1. 需求及报错 2. 分析原因 2.1 这是什么原因造成? 3. 解决方案: 使用 v-on 明确实现修改方式 4. 参考 ...

  7. [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever...

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

  8. VUE报错:Avoid mutating a prop directly since the value will be overwwritten whenever the parent及解决方案

    VUE报错: [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the p ...

  9. 关于使用elementUI DateTimePicker组件报错[Vue warn]: Avoid mutating a prop directly since the value will be

    报错信息如下: [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the ...

最新文章

  1. 本站将进行有关《大道至简》的讨论~
  2. python excelwriter保存路径_python管理文件神器 os.walk
  3. Android 使用MD5对SharedPreferences密码进行加密
  4. 管理员访客身份登录用户账户,java web/springboot/mybatis实现只能看用户信息但不允许修改
  5. asp.net中的窗体身份验证(最简单篇)
  6. 左神算法:未排序正数数组中累加和为给定值的最长子数组长度(Java版)
  7. C语言逗号运算符和逗号表达式基础总结
  8. 【WebRTC---入门篇】(八)WebRTC核心之RTP Medio 媒体控制与数据统计
  9. Java学习笔记11-2——Spring5
  10. python udp
  11. CCNA学习指南笔记(1)网络的功能
  12. 苹果Macbook快捷键使用大全
  13. 中国钢铁行业十四五形势展望与发展战略研究报告2022版
  14. 音视频传输协议之 RTMP
  15. 《大秦赋》热血霸气台词场景记录
  16. 华为手机拍照后图库里无照片_华为手机还有这个功能?打开图库,就可以把证件照变成电子版...
  17. css写七步诗,兄弟情谊的诗句
  18. 为硬件保留的存储空间怎么释放出来?
  19. coursera python证书_Coursera证书|三天零基础Python编程入门
  20. DR/BDR是解决什么问题的?

热门文章

  1. 密码学系列之一:密码学的前世今生
  2. [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 7笔记
  3. 电视剧《恋爱先生》观影感悟
  4. 电子计算机eniac诞生于哪年,第一台电子计算机eniac诞生于哪年
  5. 小数点用计算机怎么用,计算机如何精确到小数点后一百位
  6. 关于索引的B tree B-tree B+tree B*tree 详解结构图
  7. 哈佛梅森学者邹传伟:泡沫与机遇——数字加密货币和区块链金融九问
  8. keytool输出sha1,造成Google Map API Key无法获取的解决办法
  9. Redis事务控制|相关命令|队列失败两种情况|官方解释无回滚|悲观锁和乐观锁简单介绍
  10. 打开 DICOM zip文件