Vue:Avoid mutating a prop directly since the value will be overwritten whenever the parent..报错

本文主要是介绍Vue:Avoid mutating a prop directly since the value will be overwritten whenever the parent..报错,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Vue框架的:Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or goupuitied property based on theprop’s value.Prop being mutated:"number1"报错

我们想要在Vue框架中实现一个父子通信中的双向绑定,
这是出现错误的源码:

<div id="app"><!-- 假如在标签中不需要写东西,那么可以写成单标签<cpnn /> --><cpnn :number1=num1 :number2=num2 /></div><script src="vue.js"></script><template id="aaa"><div><!-- 这里打印一下组件的内容,来检查一下是否传入成功 --><h2>{{number1}}</h2><input type="text " v-model="number1"><h2>{{number2}}</h2><input type="text " v-model="number2"></div></template><script>const app = new Vue({el: '#app',data: {num1: 1,num2: 2,},components: {cpnn: {template: '#aaa',//定义了两个变量来接父组件传过来的东为number类型西props: {number1: Number,number2: Number,}}}})</script>

在使用时,虽然可以实现我们在输入框内输入内容,然后实时显示我们输入的内容,但是在控制台我们发现出现了报错,每输入或删除一个数子,就报错一次。

在这里插入图片描述
错误描述:

我们在props里面定义的变量只能通过父组件来修改,因为props本身的目的就是要求父组件来传数据,所以这个代码中我们不仅父组件修改了变量值,而且我们又通过input来修改了变量值,这是VUE不允许的,这样变量值就会变得很混乱。他建议让我们用data或者computed来代替。

修改方法

<div id="app"><!-- 假如在标签中不需要写东西,那么可以写成单标签<cpnn /> --><cpnn :number1=num1 :number2=num2 /></div><script src="vue.js"></script><template id="aaa"><div><!-- 这里打印一下子组件的内容,来检查一下是否传入成功 --><h2>props:{{number1}}</h2><h2>data1:{{datanumber1}}</h2><input type="text " v-model="datanumber1"><h2>props:{{number2}}</h2><h2>data2:{{datanumber2}}</h2><input type="text " v-model="datanumber2"></div></template><script>const app = new Vue({el: '#app',data: {num1: 1,num2: 2,},components: {cpnn: {template: '#aaa',//定义了两个变量来接父组件传过来的东为number类型西props: {number1: Number,number2: Number,},// 我们再创建一个data,将props里的内容传给data,再让v-model绑定data里的变量data() {return {datanumber1: this.number1,datanumber2: this.number2,}}}}})</script>

这样我们再运行就不会出现报错了:
在这里插入图片描述

这篇关于Vue:Avoid mutating a prop directly since the value will be overwritten whenever the parent..报错的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/168928

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu