解决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 相关文章推荐
iframe的onreadystatechange事件在firefox下的使用
Apr 16 Javascript
jquery实现清新实用的网页菜单效果
Aug 28 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
Sep 04 Javascript
AngularJS 模块化详解及实例代码
Sep 14 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
Feb 19 Javascript
详解webpack 如何集成第三方js库
Jun 29 Javascript
Vue2.0 事件的广播与接收(观察者模式)
Mar 14 Javascript
vue引入js数字小键盘的实现代码
May 14 Javascript
Vue-component全局注册实例
Sep 06 Javascript
GOJS+VUE实现流程图效果
Dec 01 Javascript
深入浅析vue-cli@3.0 使用及配置说明
May 08 Javascript
d3.js实现图形缩放平移
Dec 19 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
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
brook javascript框架介绍
2011/10/10 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
python面试题之列表声明实例分析
2019/07/08 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
python pillow模块使用方法详解
2019/08/30 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
《孔子游春》教学反思
2014/02/25 职场文书
优秀护士演讲稿
2014/04/30 职场文书
商铺消防安全责任书
2014/07/29 职场文书
食品安全承诺书范文
2014/08/29 职场文书
公司人事管理制度
2015/08/05 职场文书
MySQL 数据类型详情
2021/11/11 MySQL
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python