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 相关文章推荐
特殊字符、常规符号及其代码对照表
Jun 26 Javascript
javascript 写类方式之六
Jul 05 Javascript
基于jquery的jqDnR拖拽溢出的修改
Feb 12 Javascript
jquery 笔记 事件
Nov 02 Javascript
JS 表单验证大全
Nov 23 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
用JavaScript实现对话框的教程
Jun 04 Javascript
JQuery创建DOM节点的方法
Jun 11 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
Feb 21 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
Jan 24 Javascript
JS实现简单随机3D骰子
Oct 24 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
Apr 08 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 SDK之微信公众号支付代码详解
2015/12/09 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
vxe-table vue table 表格组件功能
2019/05/26 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
Python爬虫文件下载图文教程
2018/12/23 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
python代码能做成软件吗
2020/07/24 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
美国最大的团购网站:Groupon
2016/07/23 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
小区门卫工作职责
2013/12/14 职场文书
文案策划求职信
2014/04/14 职场文书
会员活动策划方案
2014/08/19 职场文书
员工生日活动方案
2014/08/24 职场文书