Vue将props值实时传递 并可修改的操作


Posted in Javascript onAugust 09, 2020

我们都知道props值是只读的,子组件内不可直接修改,会报错滴

但是很多时候这个值是需要子组件主动修改的,一般我们会使用this.$emit()去修改,但比较麻烦

下面这种方式可以实现:

1、父组件实时修改props值时,子组件可以接收到改变

2、子组件可主动修改该值

<div>{{RealValue}}</div>

 props: [ "value" ],
 watch: {
 value (v) {
  this.RealValue = v
 }
 },
 data () {
 return {
  RealValue: this.value
 }
 }

原理很简单,就是使用一个RealValue作为实际显示的参数,并且使用watch实时把value值传给他

PS:这里的值是字符串格式,如果value是对象或者数组,watch处要写成:

watch: {
 value:{
  deep: true,
  handler(v) {
   this.RealValue = v
  }
 }
 },

补充知识:vue组件内数值做watch监听,首次监听不到的问题

在vue中会使用很多子组件,有时因为组件的类型等原因会导致数据监听不到的情况,下面列举几种问题和解决方法

子组件内数据首次监听不到时,可以使用【immediate】方法,其值是true或false;immediate:true代表如果在 wacth 里声明了之后,就会立即先去执行里面的handler方法

watch:{
 uploadImageUrl:{
 immediate:true,
 handler:function(newval){
 this.uploadShowImageUrl = newval;
 }
 }
},

子组件的深度监听函数【deep】,其值是true或false;确认是否深入监听。deep的意思就是深入观察,监听器会一层层的往下遍历,给对象的所有属性都加上这个监听器(受现代 JavaScript 的限制 (以及废弃 Object.observe),Vue 不能检测到对象属性的添加或删除)

watch:{
 uploadImageUrl:{
 deep:true,
 handler:function(newval){
 this.uploadShowImageUrl = newval;
 }
 }
},

给组件内的props为对象的数据设置默认值

如果prop中接收的数据为对象或者数组类型,是不可以像字符串等【default:''】直接指定default值的,会报【Invalid default value for prop “defaultProp”: Props with type Object/Array must use a factory function to return the default value.】错误,修正方法如下

defaultProp: {
 type: Object,
 default: function(){
  return {
   children: 'children',
   label: 'name'
  }
 }
},

以上这篇Vue将props值实时传递 并可修改的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
Aug 12 Javascript
DOM_window对象属性之--clipboardData对象操作代码
Feb 03 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
Sep 28 Javascript
基于JQuery的多标签实现代码
Sep 19 Javascript
查看大图功能代码jquery版
Nov 05 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
Feb 07 Javascript
input禁止键盘及中文输入,但可以点击
Feb 13 Javascript
js获得页面的高度和宽度的方法
Feb 23 Javascript
详解js的六大数据类型
Dec 27 Javascript
详解Javascript中new()到底做了些什么?
Mar 29 Javascript
JS图片懒加载的优点及实现原理
Jan 10 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
Mar 25 Javascript
js实现轮播图效果 纯js实现图片自动切换
Aug 09 #Javascript
vue 子组件watch监听不到prop的解决
Aug 09 #Javascript
vue 重塑数组之修改数组指定index的值操作
Aug 09 #Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
Aug 09 #Javascript
bootstrap实现tab选项卡切换
Aug 09 #Javascript
vue动画—通过钩子函数实现半场动画操作
Aug 09 #Javascript
js利用iframe实现选项卡效果
Aug 09 #Javascript
You might like
C# Assembly类访问程序集信息
2009/06/13 PHP
Symfony生成二维码的方法
2016/02/04 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
python基础教程之lambda表达式使用方法
2014/02/12 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
Python根据服务获取端口号的方法
2019/09/25 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
编辑找工作求职信范文
2013/12/16 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
Nginx+Tomcat负载均衡集群的实现示例
2021/10/24 Servers
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL