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 相关文章推荐
WordPress 照片lightbox效果的运用几点
Jun 22 Javascript
IE下使用cloneNode注意事项分享
Nov 22 Javascript
让ie6也支持websocket采用flash封装实现
Feb 18 Javascript
js每隔5分钟执行一次ajax请求的实现方法
Nov 27 Javascript
JQuery EasyUI 数字格式化处理示例
May 05 Javascript
javascipt:filter过滤介绍及使用
Sep 10 Javascript
JSONP之我见
Mar 24 Javascript
jQuery ajax提交Form表单实例(附demo源码)
Apr 06 Javascript
值得分享的Bootstrap Table使用教程
Nov 23 Javascript
详解node Async/Await 更好的异步编程解决方案
May 10 Javascript
vue实现整屏滚动切换
Jun 29 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
Jul 13 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下几种删除目录的方法总结
2007/08/19 PHP
php 三维饼图的实现代码
2008/09/28 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
JavaScript prototype对象的属性说明
2010/03/13 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
解析Python中的二进制位运算符
2015/05/13 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
Python中property属性实例解析
2018/02/10 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python opencv如何实现图片绘制
2020/01/19 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
艺术设计专业个人求职信范文
2013/12/11 职场文书
个人授权委托书
2014/09/15 职场文书
学生检讨书如何写
2014/10/30 职场文书
公司庆典欢迎词
2015/01/26 职场文书
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python