(复习)父子组件传值使用v-modal双向绑定,报错Avoid mutating a prop directly解决方案
报错:Avoid mutating a prop directly since the value will be overwritten whenever the parent component........
原因:所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行。(父组件更新,子组件中的prop值也会更新,但子组件不能修改由父组件传递过来的值)
不能直接对父组件传来的值进行双向绑定,要先子组件里定义新的变量来接收父组件传来的值,接着我们可以使用v-modal+watch属性 或者 使用:binfd="" + @input=" func"(再定义这个func通过传入的event 得到改变的值,将event.target.value赋值给新变量)
<div id="app">
<h3>我是父组件</h3>
<templ :num-from-father="fatherData"
:num-from-father2="fatherData2"
@change1="changeFunc1"
@change2="changeFunc2"/>
</div> <template id="temp">
<div>
<h3>我是子组件</h3>
<p>props1:{{numFromFather}}</p>
<p>转存的值:{{receiveNum1}}</p>
<!-- 方法1 -->
<input type="number" :bind="receiveNum1" @input="receiveNum1Input">
<p>props2:{{numFromFather2}}</p>
<p>转存的值:{{receiveNum2}}</p>
<!-- 方法2 使用watch -->
<input type="number" v-model="receiveNum2">
</div>
</template>
<script src="/js/vue.js"></script>
<script>
const vm = new Vue({
el:'#app',
data:{
fatherData:0,
fatherData2:10
},
methods: {
changeFunc1(value){
this.fatherData = value*1;
},
changeFunc2(value){
this.fatherData2 = value*1;
}
},
components:{
templ:{
template:'#temp',
props:{
numFromFather:Number,
numFromFather2:Number,
},
data(){
return{
receiveNum1:this.numFromFather,
receiveNum2:this.numFromFather2,
}
},
methods: {
receiveNum1Input(event){
this.receiveNum1 = event.target.value;
this.$emit('change1',this.receiveNum1);
this.receiveNum2 = this.receiveNum1*100;
this.$emit('change2',this.receiveNum2);
}
},
watch: {
receiveNum2(newValue){
this.receiveNum2 = newValue;
this.$emit('change2',this.receiveNum2);
this.receiveNum1 = this.receiveNum2/100;
this.$emit('change1',this.receiveNum1);
}
},
}
}
})
</script>
(复习)父子组件传值使用v-modal双向绑定,报错Avoid mutating a prop directly解决方案的更多相关文章
- Vue2.0 Props双向绑定报错简易处理办法
在写项目的时候遇到了一个报错问题,虽然功能是正常运行,chrome的提示是:[Vue warn]: Avoid mutating a prop directly since the value wil ...
- vue---props进行双向数据绑定报错
在使用vue进行组件开发的时候,遇到一个问题,父组件传递到子组件里面的值,如果在子组件里面进行改变 传递过来的"值",会报错: [Vue warn]: Avoid mutating ...
- 十八、React react-router4.x中:实现路由模块化、以及嵌套路由父子组件传值
一.路由模块化(用字典定义路由,然后循环出来) 1.官方文档参考 [官方文档]https://reacttraining.com/react-router/web/guides/quick-start ...
- Angular 父子组件传值
Angular 父子组件传值 @Input @Output @ViewChild 新建一个头部组件 newsheader 在主组件引用 news 组件,在news组件添加 newsheader 组 ...
- vue 非父子组件传值
/*非父子组件传值 1.新建一个js文件 然后引入vue 实例化vue 最后暴露这个实例 2.在要广播的地方引入刚才定义的实例 3.通过 VueEmit.$emit('名称','数据') 4.在接收收 ...
- 使用react进行父子组件传值
在单页面里面,父子组件传值是比较常见的,之前一直用vue开发,今天研究了一下react的父子组件传值,和vue差不多的思路,父组件向子组件传值,父通过初始state,子组件通过this.props进行 ...
- 【vue】父组件主动调用子组件 /// 非父子组件传值
一 父组件主动调用子组件: 注意:在父组件使用子组件的标签上注入ref属性,例如: <div id="home"> <v-header ref="he ...
- vue父子组件传值加例子
例子:http://element-cn.eleme.io/#/zh-CN/component/form 上进行改的 父传子:用prop:子组件能够改变父组件的值,是共享的,和父操作是 ...
- Vue中非父子组件传值的问题
父子组件传值的问题,前面已经讲过,不再叙述,这里来说一种非父子组件的传值. vue官网指出,可以使用一个空vue实例作为事件中央线! 也就是说 非父子组件之间的通信,必须要有公共的实例(可以是空的), ...
随机推荐
- 02-React基础语法(2)
一.条件渲染 语法:使用原生 js 的 if 或者 三元表达式 判断 例子:判断用户是否登录,提示:已登录.未登录 (User组件) <script type="text/babe ...
- 解决问题:当redis服务端断开的时候`进程会崩溃(转载6哥笔记)
package main import ( "fmt" "github.com/astaxie/beego/logs" "github.com/gar ...
- LAMP环境搭建与配置(3)
PHP配置 查看PHP配置文件的位置 # /usr/local/php/bin/php -i |grep -i "loaded configuration file" ...
- win10修改jupyter notebook默认路径
安装anaconda3 ,因此自带jupyter notebook 发送到jupyter notebook到桌面快捷方式 右击属性,将目标的%USERPROFILE%,修该为自己需要的路径 起始位置修 ...
- 关于 setw() 函数(C++)
// about setw() #include <iostream> #include <iomanip> #include <cstring> using na ...
- SpringBoot的应运而生
随着动态语言的流行(Ruby,Groovy,Scala,Node.js),java的开发显得格外的笨重,繁多的配置,低下的效率,复杂的部署流程以及第三方技术集成难度大.springboot应运而生,使 ...
- 理解Javascript的变量提升
前言 本文2922字,阅读大约需要8分钟. 总括: 什么是变量提升,使用var,let,const,function,class声明的变量函数类在变量提升的时候都有什么区别. 参考文章:Hoistin ...
- 关于eclipse 项目导入不了 maven依赖的解决办法
1.首先确定你的项目是maven 项目 ,如果不是:项目右键Configure -->Convert to maven project. 2.在SVN导出的Maven项目,或以前不是用Maven ...
- jQuery 判断页面上下滚动
var t = 0, b = 0; $(window).scroll(function(){ t = $(this).scrollTop(); if(b < t){ console.log('向 ...
- 基于Dapper的开源Lambda扩展LnskyDB 3.0已支持Mysql数据库
LnskyDB LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼.,现在已经支持MySql和Sql serv ...