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 相关文章推荐
Extjs学习笔记之三 extjs form更多的表单项
Jan 07 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
Jun 16 Javascript
ext前台接收action传过来的json数据示例
Jun 17 Javascript
node.js中的fs.chownSync方法使用说明
Dec 16 Javascript
JavaScript获取一个范围内日期的方法
Apr 24 Javascript
jquery插件NProgress.js制作网页加载进度条
Jun 05 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
微信小程序组件 marquee实例详解
Jun 23 Javascript
详解利用 Express 托管静态文件的方法
Sep 18 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
May 14 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
Jul 13 Javascript
Jquery cookie插件实现原理代码解析
Aug 04 jQuery
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中取得文件的后缀名?
2012/02/20 PHP
php表单提交实例讲解
2015/11/12 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
python 查找字符串是否存在实例详解
2017/01/20 Python
python导出chrome书签到markdown文件的实例代码
2017/12/27 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
2013英文求职信模板范文
2013/11/15 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
购房公证委托书(2014版)
2014/09/12 职场文书
争先创优演讲稿
2014/09/15 职场文书
三严三实心得体会范文
2014/10/13 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript