解决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 相关文章推荐
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 Javascript
让angularjs支持浏览器自动填表
Nov 10 Javascript
浅谈javascript 函数属性和方法
Jan 21 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
Apr 01 Javascript
JavaScript中操作字符串小结
May 04 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
Dec 01 Javascript
两行代码轻松搞定JavaScript日期验证
Aug 03 Javascript
jQuery源码分析之init的详细介绍
Feb 13 Javascript
利用vue + element实现表格分页和前端搜索的方法
Dec 25 Javascript
详解小程序输入框闪烁及重影BUG解决方案
Aug 31 Javascript
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 Javascript
vue项目中仿element-ui弹框效果的实例代码
Apr 22 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
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
php创建sprite
2014/02/11 PHP
基于php判断客户端类型
2016/10/14 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
Python中pass语句的作用是什么
2016/06/01 面试题
介绍一下Ruby的特点
2013/01/20 面试题
医学毕业生自我鉴定
2013/10/30 职场文书
网络专业学生个人的自我评价
2013/12/16 职场文书
毕业设计计划书
2014/01/09 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
教师辞职信范文
2015/02/28 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
初中信息技术教学反思
2016/02/16 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
python基础之//、/与%的区别详解
2022/06/10 Python