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 相关文章推荐
懒就要懒到底——鼠标自动点击(含时间判断)
Feb 20 Javascript
5分钟理解JavaScript中this用法分享
Nov 09 Javascript
jQuery实现强制cookie过期方法汇总
May 22 Javascript
解决jquery无法找到其他父级子集问题的方法
May 10 Javascript
jQuery基于BootStrap样式实现无限极地区联动
Aug 26 Javascript
用move.js库实现百叶窗特效
Feb 08 Javascript
JS基于正则表达式实现的密码强度验证功能示例
Sep 21 Javascript
angularjs性能优化的方法
Sep 05 Javascript
node.js微信小程序配置消息推送的实现
Feb 13 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
Sep 10 Javascript
用Golang运行JavaScript的实现示例
Nov 25 Javascript
webpack.DefinePlugin与cross-env区别详解
Feb 23 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
PHP函数utf8转gb2312编码
2006/12/21 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
Python3安装Pillow与PIL的方法
2019/04/03 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
Python selenium自动化测试模型图解
2020/04/15 Python
python logging模块的使用
2020/09/07 Python
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
德国苹果商店:MacTrade
2020/05/18 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
家长写给孩子的评语
2014/04/18 职场文书
党员承诺书范文
2014/05/19 职场文书
实习单位指导教师评语
2014/12/30 职场文书
捐款感谢信
2015/01/20 职场文书
高考学习决心书
2015/02/04 职场文书
人民的好儿女观后感
2015/06/18 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS