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

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

springboot报错Invalid bound statement (not found)的解决

《springboot报错Invalidboundstatement(notfound)的解决》本文主要介绍了springboot报错Invalidboundstatement(not... 目录一. 问题描述二.解决问题三. 添加配置项 四.其他的解决方案4.1 Mapper 接口与 XML 文件不匹配

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

关于Docker Desktop的WSL报错问题解决办法

《关于DockerDesktop的WSL报错问题解决办法》:本文主要介绍关于DockerDesktop的WSL报错问题解决办法的相关资料,排查发现是因清理%temp%文件夹误删关键WSL文件,... 目录发现问题排查过程:解决方法其实很简单:重装之后再看就能够查到了:最后分享几个排查这类问题的小www.cp