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 25 Javascript
asm.js使用示例代码
Nov 28 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
Mar 03 Javascript
Jquery实现Div上下移动示例
Apr 23 Javascript
实例代码详解jquery.slides.js
Nov 16 Javascript
js简单网速测试方法完整实例
Dec 15 Javascript
详解JS中Array对象扩展与String对象扩展
Jan 07 Javascript
js实现本地时间同步功能
Aug 26 Javascript
Vue如何实现响应式系统
Jul 11 Javascript
Element-ui tree组件自定义节点使用方法代码详解
Sep 17 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
Feb 02 Javascript
layui点击弹框页面 表单请求的方法
Sep 21 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
数组与类使用PHP的可变变量名需要的注意的问题
2013/06/20 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
JavaScript 学习笔记(十一)
2010/01/19 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
小谈angular ng deploy的实现
2020/04/07 Javascript
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
python调用百度语音识别api
2018/08/30 Python
python根据多个文件名批量查找文件
2019/08/13 Python
Python中格式化字符串的四种实现
2020/05/26 Python
浅谈html5 响应式布局
2014/12/24 HTML / CSS
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
毕业生求职简历的自我评价
2013/10/07 职场文书
黄河的主人教学反思
2014/02/07 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
公司年会策划方案
2014/05/17 职场文书
员工生日会策划方案
2014/06/14 职场文书
劳动竞赛口号
2014/06/16 职场文书
化工专业求职信
2014/07/01 职场文书
Python中三种花式打印的示例详解
2022/03/19 Python
使用MybatisPlus打印sql语句
2022/04/22 SQL Server