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 相关文章推荐
createElement动态创建HTML对象脚本代码
Nov 24 Javascript
关于JavaScript中name的意义冲突示例介绍
May 29 Javascript
js判断是否按下了Shift键的方法
Jan 27 Javascript
JS实现FLASH幻灯片图片切换效果的方法
Mar 04 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
Aug 17 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
Oct 05 Javascript
jQuery表单元素选择器代码实例
Feb 06 Javascript
jQuery模拟淘宝购物车功能
Feb 27 Javascript
React Native自定义控件底部抽屉菜单的示例
Feb 08 Javascript
Angular6 用户自定义标签开发的实现方法
Jan 08 Javascript
详解Vue用cmd创建项目
Feb 12 Javascript
javascript实现蒙版与禁止页面滚动
Jan 11 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 array 的加法操作代码
2010/07/24 PHP
探讨如何把session存入数据库
2013/06/07 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
js模拟弹出效果代码修正版
2008/08/07 Javascript
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
Jquery实现自定义窗口随意的拖拽
2014/03/12 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
python中的逆序遍历实例
2019/12/25 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
python3 简单实现组合设计模式
2020/07/02 Python
keras的三种模型实现与区别说明
2020/07/03 Python
浅析Python __name__ 是什么
2020/07/07 Python
解释一下抽象方法和抽象类
2016/08/27 面试题
竞选演讲稿范文
2013/12/28 职场文书
中学生英语演讲稿
2014/04/26 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL
Mysql中mvcc各场景理解应用
2022/08/05 MySQL