解决vue组件props传值对象获取不到的问题


Posted in Javascript onJune 06, 2019

先说问题,父组件利用props向子组件传值,浏览器 console 有这个值,但是获取不到内部的属性,困了我3个小时,真的**

personal
console

以下为原代码

1、home.vue(父组件)--personal是被传的参数

<!--子组件-->
<form-picker class="form-picker"
 :personal="personal"
>
</form-picker>
export default {
  data(){
    return{
      personal:{
        state:'',////判断是修改状态,还是新增状态 add/edit
        data:[]
      }
    }
  },
  mounted(){
   this.$api.personal.searchPersonalInfo(this.userInfo.userId).then((res)=>{
     this.personal.data = res.data.data //这里给personal对象赋值接口传来的数据
    })
  },
}

2、formPicker (子组件) --接收personal

export default {
  props:['active','personal'],
  mounted(){
    console.log(149,this.personal)
    console.log(150,this.personal.state)
  }
}

运行结果

明明149行有 state 值,150行输出却没有了,是不是超级奇怪

后面经过大佬的讲解,其实浏览器console.log也是应该没有的

所以,其实我们子组件一开始根本就没有取到这个personal这个对象。

3、解决方法--使用watch

父组件

export default {
  data(){
    return{
      personal:{
        state:'',////判断是修改状态,还是新增状态 add/edit
        data:[]
      }
    }
  },
  mounted(){
   this.$api.personal.searchPersonalInfo(this.userInfo.userId).then((res)=>{
     //this.personal.data = res.data.data //这里给personal对象赋值接口传来的数据
     //使用以下方法重新赋值,上面方法watch监听不到,具体什么原因,我也不清楚,知道的告知我!谢谢
     this.personal = {
      data: res.data.data,
      state: 'edit'
     }
    })
  },
}

接下来子组件就能 watch 到 personal 了 子组件

watch:{
   personal(newValue,oldValue){
    console.log(181,newValue) 
   },
/** 输出
    {
      data: res.data.data,
      state: 'edit'
     }
**/
  }

总结

以上所述是小编给大家介绍的解决vue组件props传值对象获取不到的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JavaScript的Function详细
Nov 14 Javascript
JavaScript高级程序设计
Dec 29 Javascript
优化 JavaScript 代码的方法小结
Jul 16 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
Mar 16 Javascript
JavaScript中的数学运算介绍
Dec 29 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
Nov 24 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
Mar 18 Javascript
vue2.0开发实践总结之入门篇
Dec 06 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
Dec 31 Javascript
layui table设置前台过滤转义等方法
Aug 17 Javascript
详解SPA中前端路由基本原理与实现方式
Sep 12 Javascript
详解webpack 热更新优化
Sep 13 Javascript
webpack4之如何编写loader的方法步骤
Jun 06 #Javascript
vue 插件的方法代码详解
Jun 06 #Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 #jQuery
node.js的http.createServer过程深入解析
Jun 06 #Javascript
vue中keep-alive组件的入门使用教程
Jun 06 #Javascript
vue2配置scss的方法步骤
Jun 06 #Javascript
JavaScript中将值转换为字符串的五种方法总结
Jun 06 #Javascript
You might like
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
详解React之key的使用和实践
2018/09/29 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
python中map()函数的使用方法示例
2017/09/29 Python
python的文件操作方法汇总
2017/11/10 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
python实现音乐下载器
2018/04/15 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
如何使用Python脚本实现文件拷贝
2019/11/20 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
小学数学国培感言
2014/03/10 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
大学新生军训方案
2014/05/03 职场文书
电工实训报告总结
2014/11/05 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
给老婆的检讨书
2015/01/27 职场文书
在职证明书模板
2015/06/15 职场文书