解决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 相关文章推荐
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
Feb 07 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
Feb 10 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
Jun 26 Javascript
分享两款带遮罩的jQuery弹出框
Dec 30 Javascript
js闭包引起的事件注册问题介绍
Mar 29 Javascript
JavaScript lodash常见用法系列小结
Aug 24 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
Oct 04 Javascript
webpack4简单入门实例
Sep 06 Javascript
手动下载Chrome并解决puppeteer无法使用问题
Nov 12 Javascript
Vue Echarts实现可视化世界地图代码实例
May 07 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
Feb 09 Javascript
js实现页面图片消除效果
Mar 24 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 截取字符串专题集合
2010/08/19 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
vue实现信息管理系统
2020/05/30 Javascript
Python实现翻转数组功能示例
2018/01/12 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
如何卸载python插件
2020/07/08 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
期末总结的个人自我评价
2013/11/02 职场文书
机电一体化大学生求职信
2013/11/08 职场文书
运动会四百米广播稿
2014/01/19 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
房地产活动策划方案
2014/05/14 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
材料物理专业求职信
2014/09/01 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
2016新年致辞
2015/08/01 职场文书
Golang获取List列表元素的四种方式
2022/04/20 Golang