【vue warning】avoid mutating a prop directly
[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相关推荐
- 【vue报错】【子组件改变父组件数据】 Avoid mutating a prop directly since
[vue报错] Avoid mutating a prop directly since the value will be overwritten whenever the parent compo ...
- 前端开发:Vue报错Avoid mutating a prop directly since the value will be…的解决方法
前言 前端开发中,在使用Vue开发的时候,经常会遇到一些很共性的报错提示,而且有时候提示已经很明确的告诉开发者问题出现在哪里,尤其是在Chrome的控制台输出上面,只要看一下输出日志就知道问题所在.但 ...
- 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 子组件修改父组件值时报的错 ...
- 【Vue.JS】Render 实现留言板实例及 Avoid mutating a prop directly 错误处理
声明:文中代码整体思路来源于 梁灏 编著的 [Vue.JS 实战]一书,学习过程中发现一处问题.以做记录 效果图 代码 index.html <!DOCTYPE html> <htm ...
- 【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. 需求及报 ...
- 【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. 参考 ...
- [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 ...
- 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 ...
- 关于使用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 ...
最新文章
- 本站将进行有关《大道至简》的讨论~
- python excelwriter保存路径_python管理文件神器 os.walk
- Android 使用MD5对SharedPreferences密码进行加密
- 管理员访客身份登录用户账户,java web/springboot/mybatis实现只能看用户信息但不允许修改
- asp.net中的窗体身份验证(最简单篇)
- 左神算法:未排序正数数组中累加和为给定值的最长子数组长度(Java版)
- C语言逗号运算符和逗号表达式基础总结
- 【WebRTC---入门篇】(八)WebRTC核心之RTP Medio 媒体控制与数据统计
- Java学习笔记11-2——Spring5
- python udp
- CCNA学习指南笔记(1)网络的功能
- 苹果Macbook快捷键使用大全
- 中国钢铁行业十四五形势展望与发展战略研究报告2022版
- 音视频传输协议之 RTMP
- 《大秦赋》热血霸气台词场景记录
- 华为手机拍照后图库里无照片_华为手机还有这个功能?打开图库,就可以把证件照变成电子版...
- css写七步诗,兄弟情谊的诗句
- 为硬件保留的存储空间怎么释放出来?
- coursera python证书_Coursera证书|三天零基础Python编程入门
- DR/BDR是解决什么问题的?
热门文章
- 密码学系列之一:密码学的前世今生
- [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 7笔记
- 电视剧《恋爱先生》观影感悟
- 电子计算机eniac诞生于哪年,第一台电子计算机eniac诞生于哪年
- 小数点用计算机怎么用,计算机如何精确到小数点后一百位
- 关于索引的B tree B-tree B+tree B*tree 详解结构图
- 哈佛梅森学者邹传伟:泡沫与机遇——数字加密货币和区块链金融九问
- keytool输出sha1,造成Google Map API Key无法获取的解决办法
- Redis事务控制|相关命令|队列失败两种情况|官方解释无回滚|悲观锁和乐观锁简单介绍
- 打开 DICOM zip文件